можно ли вызвать функцию из конструктора класса?
Конечно. Есть, правда, некоторые тонкости с виртуальными функциями.
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)
{
}