1.93、什么是析构函数,如何重载析构函数?
析构函数是C++类中的一种特殊成员函数,用于在对象生命周期结束时自动执行清理工作,释放对象占用的资源(如动态分配的内存、文件句柄等),防止资源泄漏。
- • 定义特征:析构函数名称为类名加波浪号
~
,如~ClassName()
,无参数且无返回值。 - • 调用时机:当对象超出作用域、通过
delete
释放动态对象、程序结束时全局或静态对象销毁时自动调用。 - • 作用:释放对象持有的资源,执行必要的清理,保证资源正确回收,避免内存泄漏。
- • 重载情况:析构函数不能重载,因为它只能有一个且参数固定为空,函数重载要求同名函数参数列表不同,而析构函数参数固定为空。
- • 虚析构函数:析构函数可以声明为
virtual
,保证通过基类指针删除派生类对象时调用正确的析构函数,防止资源泄漏。
关键点总结
特性 | 说明 |
名称 | ~类名() |
参数 | 无 |
返回值 | 无 |
是否可重载 | 不可重载 |
是否可虚 | 可以声明为virtual 支持多态销毁 |
调用时机 | 对象生命周期结束自动调用 |
作用 | 释放资源,执行清理 |
简短示例
class MyClass {
public:
MyClass() { /* 构造函数 */ }
~MyClass() { /* 释放资源 */ }
};
结论
析构函数是类的“终结者”,用于自动清理资源,不能重载,只能定义一个,且通常建议基类析构函数声明为virtual
以支持多态安全销毁。这种设计确保了资源管理的正确性和程序的健壮性。
本文首发于【讳疾忌医-note】公众号,未经授权,不得转载。
个人教程网站内容更丰富:(https://www.1217zy.vip/)
阅读剩余
版权声明:
作者:讳疾忌医-note
链接:https://www.1217zy.vip/archives/1908
文章版权归作者所有,未经允许请勿转载。
THE END