-
先知道:构造函数先造就别人在造就自己,析构函数先牺牲自己在牺牲别人 (先构造基类,在构造自身类;先析构自身类,在析构基类)
- 再知道:虚析构或者纯虚析构都是用来解决 基类指针指向子对象时,子类没有析构的问题
- 最后知道:用vs命令提示器查看单个类对象:cl /d1 reportSingleClassLayout类名 文件名
先看代码:
//测试虚析构
#include<iostream>
using namespace std;
class Base
{
public:
Base()
{
cout<<"Base的构造函数调用"<<endl;
}
virtual void func()=0;
~Base()
{
cout<<"Base的析构函数调用"<<endl;
}
};
class Son:public Base
{
public:
Son()
{
cout<<"Son的构造函数调用"<<endl;
}
void func()
{
cout<<"Hello!"<<endl;
}
~Son()
{
cout<<"Son的析构函数调用"<<endl;
}
};
void test()
{
Base *base=new Son; //基类指针指向一个子类
base->func();
delete base;
}
int main()
{
test();
system("pause");
return 0;
}
结果为