欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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”,可以得到如下内容:

Cpp 对象模型探索 -- 编译器为对象创建缺省析构函数的条件

说明编译器为 Son 类创建了析构函数。


代码

class Son1 
{
public:
	~Son1() {}
};

class Son2
{
	Son1 sn1;
};

int main()
{
	Son2 sn2;
	return 0;
}

分析

使用 dumpbin /all 指令,打开 obj 文件,搜索“Son::~Son”,可以得到如下内容:

Cpp 对象模型探索 -- 编译器为对象创建缺省析构函数的条件

说明编译器为 Son 类创建了析构函数。

 

(SAW:Game Over!)