学习 C++ 也有一段时间了,但是对于虚析构函数还是一知半解。到底在什么情况下应该使用析构函数,什么情况下又不要使用呢?请高手帮忙说明一下,最好能配合一些实例讲解一下。先谢过了。

解决方案 »

  1.   

    class A : public B
    ...B pB = new A();delete B;//这里~B();尽量是虚拟的
      

  2.   

    在任何需要RTTI的情形下,析构函数都要是virtual的,否则对象可能会调用不匹配的析构函数
      

  3.   

    一旦派生,析构函数必须是virtual,以免发生错误。
      

  4.   

    class A : public B
    ...B pB = new A();delete B;//这里~B();尽量是虚拟的这段代码已经可以说明问题啦。
    如果~B()不是虚拟的,程序就只会调用~B(),而不会去调用~A()
    A pA = new A();
    这样就没有问题啦,C++会自动按层次调用自己和基类的析构函数。