<<深度探索C++对象模型>>有关问题之四
<<深度探索C++对象模型>>问题之四
P193说到: 以静态的方式调用....的destructor.
因此我猜想, 一个基类的destructor声明为virtual的作用可能仅仅在于当这种情况:
Base *p = new Derived;
delete p;
释放*p空间时, 能够调用到 ~Derived() 从而完全地释放.
我想问的是: 为什么当~Base为virtual时, delete p 会调用~Derived, 而~Base为non-virtual 时, 就调用不到呢?
------解决方案--------------------
嘿嘿,无盐。。。:)
P193说到: 以静态的方式调用....的destructor.
因此我猜想, 一个基类的destructor声明为virtual的作用可能仅仅在于当这种情况:
Base *p = new Derived;
delete p;
释放*p空间时, 能够调用到 ~Derived() 从而完全地释放.
我想问的是: 为什么当~Base为virtual时, delete p 会调用~Derived, 而~Base为non-virtual 时, 就调用不到呢?
------解决方案--------------------
嘿嘿,无盐。。。:)