[]C++析构函数调用有关问题
[求助]C++析构函数调用问题
基类A
派生类B
代码如下:
如果A的析构函数设为virtual,那么析构调用顺序是派生类,基类;
而如果A的析构函数不是virtual,那么将会只调用基类A的析构函数;
请问这是为什么?
测试代码如下:
------解决思路----------------------
http://www.360doc.com/content/14/0226/10/1317564_355777681.shtml
------解决思路----------------------
自己搜搜虚析构的知识看看。
------解决思路----------------------
去看看虚函数多态的章节就是了。
基类A
派生类B
代码如下:
A *pA = new B();
delete A;
A = NULL;
如果A的析构函数设为virtual,那么析构调用顺序是派生类,基类;
而如果A的析构函数不是virtual,那么将会只调用基类A的析构函数;
请问这是为什么?
测试代码如下:
#include <iostream>
class CBase
{
public:
~CBase()
{
printf("CBase destruct\n");
}
virtual void PrintInfo() = 0;
};
void CBase::PrintInfo()
{
printf("this is a pure virtual function\n");
}
class CDerived : public CBase
{
public:
~CDerived()
{
printf("CDerived destruct\n");
}
void PrintInfo()
{
printf("this is a derived overide function\n");
CBase::PrintInfo();
}
};
void TestPureVitualFunc()
{
CBase *pB = new CDerived();
pB->PrintInfo();
delete pB;
pB = NULL;
}
------解决思路----------------------
http://www.360doc.com/content/14/0226/10/1317564_355777681.shtml
------解决思路----------------------
自己搜搜虚析构的知识看看。
------解决思路----------------------
去看看虚函数多态的章节就是了。