为什么构造函数和析构函数的数目不对应?
教材上写的c++将按照与构造函数相反的次序调用析构函数,在这个程序中为什么构造函数与西沟函数的调用不仅数目不对应而且次序也不是相反呢?运行结果的图片传不上来......
#include <iostream>
using namespace std;
class BASE
{
public:
BASE(){cout<<"construct BASE!"<<endl;}
virtual ~BASE()
{
cout<<"destruct BASE! "<<endl;
}
};
class DERIVED:public BASE
{
public:
DERIVED(){cout<<"construct DERIVED!"<<endl;}
~DERIVED()
{
cout<<"destruct DERIVED! "<<endl;
}
};
int main()
{
BASE *b=new BASE;
DERIVED d;
b=&d;
delete b;
return 0;
}
[解决办法]
和数据结构的堆栈不一样!这里只是内存的一个管理方式而已!
可以看看内存管理这块知识点!