父类虚析构函数是怎么被调用的?
父类虚析构函数是怎么被调用的?
父类把自己的析构函数社成虚函数。
当使用子类/父类指针delete时,子类,父类的析构都将被调用到?
这是怎么实现的呢?
按说 子类的虚函数表里只有自己的析构函数啊
还是 析够父类直接作为子类析构函数的一部分?
。。。有点拗口
#include <iostream.h>
class Base1
{
public:
Bese1()
{
cout<<"Base1::Bese1()"<<endl;
}
virtual
~Base1()
{
cout<<"Base1::~Base1()"<<endl;
}
virtual void Func()
{
cout<<"Base1::Func()"<<endl;
}
int i;
};
class Derive : public Base1 //,public Base2
{
public:
Derive()
{
cout<<"Derive::Derive()"<<endl;
}
~Derive()
{
cout<<"Derive::~Derive()"<<endl;
}
void Func()
{
cout<<"Derive::Func()"<<endl;
}
int j;
};
void main()
{
cout<<"---------------Base1*----------------"<<endl;
Base1* p = new Derive();
cout<<endl;
p->Func();
cout<<endl;
delete p;
cout<<endl<<endl;
}
猜测Derive 内存结构
|-------------------------|
| int i; |
|-------------------------|
| _vptr_Base1 |---------->|----------------------|
|-------------------------| | type info Derive |
| int j; | |----------------------|
|-------------------------| | Derive::~Derive() |
|----------------------|
| Derive::Func() |
|----------------------|