引言
在QT开发过程中,遇到一个警告:你在类中定义了虚函数,是否要将析构函数定义为虚函数。所以,想测试一下虚析构函数和非虚构函数的的区别。
测试
测试思路如下:一个基类和一个子类,new创建一个子类对象,赋值给一个基类指针,通过基类指针删除该对象。
非虚析构函数
测试代码virtualfunc.cpp如下
#include <iostream>
using namespace std;
class CBase
{
public:
CBase() { cout<<"CBase construction \n"; }
/*virtual*/ ~CBase() { cout<<"CBase desconstruction \n"; }
};
class CChild : public CBase
{
public:
CChild() { cout<<"CChild construction \n"; }
/*virtual*/ ~CChild() { cout<<"CChild desconstruction \n"; }
};
void test()
{
CBase* pChild = new CChild();
delete pChild;
}
int main()
{
test();
return 0;
}
测试结果如下:
liu19@DESKTOP-4E