Невозможно вызвать конструктор по умолчанию напрямую ( C ++ FAQ ).то есть.
Student::Student(int n, const char* g){
Student();
set(n, g); // validate, reset if ok
}
не работает.Однако я не уверен насчет вашего решения.
*this = Student()
позвонит Student::operator=(const Student&)
.В этом конкретном классе все в порядке (эта функция является копией члена по умолчанию), но в целом это может быть не так, потому что объект Student создается только «частично» при вызове этого метода.
Лучше иметь приватныйФункция инициализации
void Student::init() {
no = 0;
grade[0] = '\0';
}
и вызов ее из обоих конструкторов.