- 时间:2021-03-06 10:00 编辑: 来源: 阅读:
- 扫一扫,手机访问
摘要:从汇编看c++的默认析构函数的使用详解
c++中,如果没有为一个类提供析构函数,那么编译器会为这个类提供默认的析构的函数。由于析构函数的功能和构造函数相反,因此和默认的构造函数类似,编译器也会提供无用的默认的析构函数,和非无用的析构函数。两者的分析情况一样(对于默认的构造函数分析,请参看《[url=http://www.1sucai.cn/article/36438.htm]从汇编看c++中默认构造函数的使用分析[/url]》)。并且编译器会提供非无用的默认析构函数情形和默认构造函数类似:
[b]1 [/b]类含有虚成员函数(类继承自虚基类或者继承的基类含有虚成员函数,也属于这种情况)
[b]2 [/b]类继承自一个基类,基类含有自定义析构函数(如果基类没有自定义析构函数,但是编译器会为它提供一个非无用的默认析构函数,也属于这种情况。这就是说,只要基类含有一个析构函数,不管这个析构函数是自定义的,还是编译器提供的非无用的默认析构函数,都行)
[b]3 [/b]类包含一个成员对象,该成员对象自定义析构函数(如果成员对象没有自定义析构函数,但是编译器会为它提供一个非无用的默认析构函数,也属于这种情况。这就是说,只要成员变量含有一个析构函数,不管这个析构函数是自定义的,还是编译器提供的非无用的默认析构函数,都行).
并且,对于编译器提供的默认析构函数,不管是无用的,还是非无用的,它们都不会自动清除对象里面所包含的资源。