析构函数申明为private的作用

一般我们的析构函数都是定为public

私有化虚构函数

我们有这样一种应用场景,我们需要实例化一个类,但是我们却不想维护它的生命周期,所以希望它功能实现完毕就自动销毁。

举个栗子:
我们有一个线程需要处理IO或者其他耗时的工作,主体函数实例化该类,一般使用下面两种方法

  • 使用局部变量实例化,显然主体函数过完,对象就销毁,而对象并不是阻塞式的,它依然需要对象内资源,这将造成无法预知的后果。
  • 使用new在堆上申请,生命周期可靠了,但是需要维护一个堆上的指针,而不知道该对象何时处理结束。如果实例化对象一多就很难受了。

所以,我们可以采用delete this的办法,在该类的最后处理完毕的函数调用delete this销毁自身。
这种方法是可行,但存在一个问题,域外不能New完自己delete ,否则可能出现两次delete的情况。

然后,可以采用将析构函数私有化,对象只能被New而不能被delete。强行delete编译器会报不可访问的错误。自然编译通不过,所以保证了该种方法的安全。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 9,618评论 1 51
  • 1. C++基础知识点 1.1 有符号类型和无符号类型 当我们赋给无符号类型一个超出它表示范围的值时,结果是初始值...
    Mr希灵阅读 18,124评论 3 82
  • const 引用 const 引用是指向 const 对象的引用:const int ival = 1024;co...
    rogerwu1228阅读 724评论 0 1
  • C++文件 例:从文件income. in中读入收入直到文件结束,并将收入和税金输出到文件tax. out。 检查...
    SeanC52111阅读 3,054评论 0 3
  • 第一天 一.内联函数(inline) 函数调用的时候需要建立栈内存环境,进行参数传递,并产生程序执行转移,这些工作...
    陈果123阅读 1,197评论 0 1

友情链接更多精彩内容