在多态的设计中,如果准备使用基类指针delete派生类对象,需将基类和派生类的析构函数声明为virtual,否则程序将无法按预期工作。
几种写法产生的运行结果如下:
1、基类和派生类析构任一个为virtual,另一个非virtual,程序行为未定义,一般会产生运行时错误。
2、基类和派生类析构都为非virtual,只有基类的析构被调用,派生类的析构不会被调用,一般会引起内存泄露。
3、基类和派生类析构都为virtual,程序正常工作,派生类和基类的析构函数先后被调用。
#include
<
iostream
>
using namespace std;
class CA
... {
public:
CA()
using namespace std;
class CA
... {
public:
CA()