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

析构函数申明为private的作用

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

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

私有化虚构函数

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

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

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

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

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

相关文章

  • 析构函数申明为private的作用

    一般我们的析构函数都是定为public 私有化虚构函数 我们有这样一种应用场景,我们需要实例化一个类,但是我们却不...

  • C++中,构造函数不能设为虚函数,基类析构函数应该设为虚函数

    构造函数不能声明为虚函数,析构函数可以声明为虚函数,而且有时是必须声明为虚函数。不建议在构造函数和析构函数里面调用...

  • 虚函数

    如果父类的析构函数没有声明为虚函数的话在父类的指针上调用析构函数会有什么后果? 屏蔽多态,子类申请的资源将不会被释...

  • c++面试问题总结

    1.c++面试问题总结:(1)空类的大小,仅含有虚函数类的大小(2)析构函数声明为虚函数的作用(3)C++多态的实...

  • PHP设计模式

    单例模式 $_instance 必须申明为静态的是有变量 构造函数和析构函数必须申明为私有,防止外部程序new类从...

  • 析构函数

    作用:析构函数,帮助我们来进行废弃对象的内存回收机制。 1:只能对类使用析构函数,一个类也只能有一个析构函数。 2...

  • g2o CurveFittingEdge

    构造函数与析构函数:C++大括号{}有作用于,在作用域范围结束时,调用结构体的析构函数,构造函数是与类同名人那个函...

  • C++之析构函数

    析构函数的概述 析构函数 完成对象的清理工作,先清理,再释放对象空间。析构函数也是编译器自动调用。 析构函数 不能...

  • 面向对象(八)-析构函数

    析构函数 定义:简单来讲,析构函数,是用来帮助我们来进行废弃对象的内存回收的机制。 语法 示例 注意点 作用程序员...

  • 父类析构函数和普通函数声明为纯虚或虚函数时调用子类方法

    [TOC] 父类析构函数和普通函数声明为纯虚或虚函数时调用子类方法 例子如代码所示 B 是 A 子类 A *a =...

网友评论

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

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