C析构函数总是或者有时只调用数据成员析构函数吗?

前端之家收集整理的这篇文章主要介绍了C析构函数总是或者有时只调用数据成员析构函数吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图验证我对C析构函数的理解.

我已多次读过,如果我自己不写一个,那么C会提供一个默认的析构函数.但这是否意味着如果我写一个析构函数,编译器仍然不会提供堆栈分配的类字段的默认清理?

我的预感是,唯一理智的行为就是所有类字段都会被破坏,无论我是否提供自己的析构函数.在这种情况下,我读过这么多次的陈述实际上有点误导,可以更好地说明:

“Whether or not you write your own destructor,the C++ compiler always
writes a default destructor-like sequence to deallocate the member
variables of your class. You may then specify additional
deallocations or other tasks as needed by defining your own destructor”

它是否正确?

解决方法

当用C清理对象时,语言会

>首先调用类的析构函数
>为该类的所有字段调用析构函数.

(这假定没有继承;如果有继承,则通过递归地遵循相同的过程来销毁基类).因此,您编写的析构函数代码只是您想要执行的自定义清理代码,以及单个数据成员的正常清理代码.你不会以某种方式“丢失”那些被称为正常对象的析构函数.

希望这可以帮助!

猜你在找的C&C++相关文章