Cpp 对象模型探索 -- 编译器为对象创建缺省析构函数的条件
程序员文章站
2024-03-21 12:32:22
...
1、基类中含有析构函数的子类,编译器为子类创建析构函数。
2、类成员变量是类对象,该类对象含有析构函数,则编译器为子类创建析构函数。
代码
class Parent
{
public:
~Parent() {}
};
class Son : public Parent
{
};
int main()
{
Son sn;
return 0;
}
分析
使用 dumpbin /all 指令,打开 obj 文件,搜索“Son::~Son”,可以得到如下内容:
说明编译器为 Son 类创建了析构函数。
代码
class Son1
{
public:
~Son1() {}
};
class Son2
{
Son1 sn1;
};
int main()
{
Son2 sn2;
return 0;
}
分析
使用 dumpbin /all 指令,打开 obj 文件,搜索“Son::~Son”,可以得到如下内容:
说明编译器为 Son 类创建了析构函数。
(SAW:Game Over!)