C++之对象的销毁

  • 生活中对象都是被初始化后才上市的
  • 生活中的对象被销毁前会做一些工作

问题1 : C++中如何清理需要销毁的对象?

  • 一般而言,需要销毁的对象都应该做清理
  • 解决方案
    • 为每个类都提供一个public的free函数
    • 对象不再需要时立即调用free函数进行清理
class Test
{
    int* p;
public:
    Test() { p = new int ;};
    void free() {delete p ;};
};
  • 存在的问题

    • free只是一个普通的函数, 必须显示的调用
    • 对象销毁前没有做清理, 很可能造成资源泄露

问题2: C++编译器是否能够自动调用某个特殊的函数进行对象的清理?

析构函数

  • C++的类中可以定义一个特殊的清理函数

    • 这个特殊的清理函数叫做析构函数
    • 析构函数的功能与构造函数相反
  • 定义 : ~ClassName()

    • 析构函数没有参数也没有返回值类型声明
    • 析构函数在对象销毁时自动调用
  • 析构函数的定义准则

    • 当类中自定义了构造函数,并且构造函数中使用了系统资源(如:内存申请,文件打开,等)则需要自动以析构函数.

小结

  • 析构函数是对象销毁时进行清理的特殊函数
  • 析构函数在对象销毁时自动被调用
  • 析构函数是对象释放系统资源的保障
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • C++文件 例:从文件income. in中读入收入直到文件结束,并将收入和税金输出到文件tax. out。 检查...
    SeanC52111阅读 3,101评论 0 3
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 9,674评论 1 51
  • 1. C++基础知识点 1.1 有符号类型和无符号类型 当我们赋给无符号类型一个超出它表示范围的值时,结果是初始值...
    Mr希灵阅读 18,166评论 3 82
  • 语言之虚与实语言的空虚、主动、生动与能力 巧言令色与木讷寡言都是偏颇
    咸叔说阅读 352评论 0 1
  • 人,可能是这个世界上唯一会思考生命意义的生物,之所以说可能,是因为人类对世界的认识始终是有限的。这个世界充...
    白言_420f阅读 416评论 6 4

友情链接更多精彩内容