64,635
社区成员
发帖
与我相关
我的任务
分享
#i nclude <iostream>
using namespace std;
class A
{
public:
A(){
cout << "A construction" << endl;
}
virtual ~A() //注意这里
{
cout << "A destruction" << endl;
}
};
class B: public A{
public:
B(){
cout << "B construction" << endl;
}
~B(){
cout << "B destruction" << endl;
}
};
void main(){
{
B pg;
}
cout << "---------------------------" << endl;
{
A *pe = new B( );
delete pe;
}
}
程序运行结果:
A construction
B construction
B destruction
A destruction
---------------------------
A construction
B construction
B destruction
A destruction
如果去掉 virtual 结果为:
A construction
B construction
B destruction
A destruction
---------------------------
A construction
B construction
A destruction