我有两个类程序员和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对象,那么为什么程序员类的析构函数会被调用?
我希望这个输出: CSstudent OBJ破坏
基类也必须销毁。它的析构函数正在运行,以便它可以处理基类中的任何潜在资源。 –
你问这个...学生继承程序员,因此当你创建一个学生时,你还必须创建一个程序员。由此导致,一旦你摧毁了学生,你也必须摧毁一名程序员。尝试在构造函数中放入相同的打印语句。 –
我强烈建议阅读一本关于C++的书。 – SergeyA