64,682
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
struct Base {
Base() {}
virtual ~Base()
{
std::cout << "Base destroyed" << std::endl;
}
};
struct Derived : Base {
~Derived() {
std::cout << "Derived destroyed" << std::endl;
}
};
int main() {
Base *b = new Derived();delete b;//输出结果:Derived destroyed、Base destroyed;
//const Base &b1 = Derived();//基类析构函数不设为虚函数,输出结果:Derived destroyed、Base destroyed、Derived destroyed、Base destroyed;
//const Base &b1 = Derived();//基类析构函数设为虚函数,输出结果:Derived destroyed、Base destroyed;
//Derived();//输出结果:Derived destroyed、Base destroyed,为什么会调用基类析构函数?
//Base b2 = Derived();//输出结果:Derived destroyed、Base destroyed、Base destroyed;
return 0;
}