【发布时间】:2014-10-08 22:18:15
【问题描述】:
class base{
public:
~base(){
cout<<"base class delete"<<endl;
}
};
class derived:public base{
public:
~derived(){
cout<<"derived class 1 delete"<<endl;
}
};
class derived2:public base,public derived{
public:
~derived2(){
cout<<"derived class 2 delete"<<endl;
}
};
int main(){
derived2 h;
return 0;
}
产生的输出是:
派生类 2 删除
派生类 1 删除
基类删除
基类删除
我知道析构函数的调用顺序与构造函数相反,但我无法理解这个输出。谁能解释一下这种行为?
【问题讨论】:
-
你到底有什么不明白的?你觉得这个输出有什么奇怪的地方?是什么引发了这个问题?
标签: c++ inheritance destructor