我试图验证我对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”
它是否正确?
解决方法
@H_301_18@ 当用C清理对象时,语言会(这假定没有继承;如果有继承,则通过递归地遵循相同的过程来销毁基类).因此,您编写的析构函数代码只是您想要执行的自定义清理代码,以及单个数据成员的正常清理代码.你不会以某种方式“丢失”那些被称为正常对象的析构函数.
希望这可以帮助!