如果你在谈论C++中的虚拟析构函数(没有虚拟构造函数这样的东西),那么如果你以多态方式使用你的子类,它们应该总是被使用.
class A
{
~A();
}
class B : public A
{
~B();
}
A* pB = new B();
delete pB; // NOTE: WILL NOT CALL B's destructor
class A
{
virtual ~A();
}
class B : public A
{
virtual ~B();
}
A* pB = new B();
delete pB; // NOTE: WILL CALL B's destructor
Run Code Online (Sandbox Code Playgroud)
编辑:不知道为什么我有一个downvote为此(如果你发表评论会很有帮助......)但是也在这里阅读
http://blogs.msdn.com/oldnewthing/archive/2004/05/07/127826.aspx
| 归档时间: |
|
| 查看次数: |
10633 次 |
| 最近记录: |