Я следующий пример кода из двух классов программатора и CSstudent гдеисполнение деструктор объекта унаследованного класса
CSstudent:public Programmer
деструкторы определяются для обоих классов:
class Programmer{
.........
public:
~Programmer(){
cout<<"A Programmer obj destroyed";
}
}
class CSstudent:public Programmer{
.........
public:
~CSstudent(){
cout<<"CSstudent obj destroyed";
}
}
В настоящее время в основном():
int main(){
CSstudent cs1;
/* call to CSstudent member functions by invoking the cs1 object
........... */
cout<<cs1.getName()<<cs1.getUni()<<cs1.getLang()<<endl;
}
После того как программа работает, я получаю следующее: CSstudent OBJ уничтожил программист OBJ уничтожил
Я знаю, что деструкторы не наследуются, и деструкторы вызываются, когда объекты выходят из области видимости. Я инициализировал объект CSstudent, затем зачем вызывается деструктор класса Programmer?
Я надеялся на этот выход: CSstudent OBJ разрушен
Базовый класс также должен быть уничтожен. Деструктор запускается таким образом, что он может обрабатывать любые потенциальные ресурсы в базовом классе. –
Вы просили об этом ... Студент наследует программиста, поэтому, когда вы создаете ученика, вы также должны создать программиста. Исходя из этого, как только вы уничтожаете ученика, вы также должны уничтожить программиста. Попытка поместить те же инструкции печати в конструктор. –
Я настоятельно рекомендую прочитать книгу на C++. – SergeyA