@zus

Можно ли вызвать функцию из конструктора класса C++?

Привет всем!
Вопрос заключается в следующем, можно ли вызвать функцию из конструктора класса? т.е. без вызова функции из main. Примерно так:
// Конструктор Students
Students::Students(std::string name, std::string last_name) 
{                                                                                            
    Students::set_name(name); // Вызываем(создаем) функцию с фактическим параметром
    Students::set_last_name(last_name); // тоже самое. Можно ли так делать?
}


Заранее благодарен!
  • Вопрос задан
  • 459 просмотров
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
http://dilbert.com/strip/1998-08-24
можно ли вызвать функцию из конструктора класса?

Конечно. Есть, правда, некоторые тонкости с виртуальными функциями.

Students::Students(std::string name, std::string last_name) 
{                                                                                            
    Students::set_name(name); // Вызываем(создаем) функцию с фактическим параметром
    Students::set_last_name(last_name); // тоже самое. Можно ли так делать?
}

Имя класса (Students::) можно не добавлять к вызовам внутри функции-члена класса.

Поля можно проинициализировать в списке инициализации конструктора. Например так:
class Students
{
...
    std::string name_;
    std::string last_name_;
...
};

Students::Students(const std::string& name, const std::string& last_name): name_(name), last_name_(last_name)
{                                                                                            
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы