美文网首页
析构函数申明为private的作用

析构函数申明为private的作用

作者: 李里里Riss | 来源:发表于2017-03-16 10:30 被阅读0次

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

    私有化虚构函数

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

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

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

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

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

    相关文章

      网友评论

          本文标题:析构函数申明为private的作用

          本文链接:https://www.haomeiwen.com/subject/ozydnttx.html