您的位置:首页 > 编程语言 > C语言/C++

C++虚析构函数

2014-05-18 16:33 169 查看
class A
{
public:
A()
{
cout << "A ctor." << endl;
}
virtual ~A()
{
cout << "A dtor." << endl;
}
};

class B: public A
{
public:
B()
{
cout << "B ctor." << endl;
}
~B()
{
cout << "B dtor." << endl;
}
};

int main()
{
A *ptr = (A *)new B;
delete ptr;

return 0;
}


父类指针指向new出来的子类对象的时候,如果父类的析构函数不是虚函数,则在delete的时候不会调用子类的析构函数。

父类析构函数不是虚函数的时候,运行结果:

A ctor.

B ctor.

A dtor.

请按任意键继续. . .

父类析构函数式虚函数的时候,运行结果:

A ctor.

B ctor.

B dtor.

A dtor.

请按任意键继续. . .
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: