【问题标题】:when should we declare destructor as =delete in c++ [duplicate]我们什么时候应该在 C++ 中将析构函数声明为 =delete [重复]
【发布时间】:2018-02-01 22:50:42
【问题描述】:

我知道声明为 delete 的析构函数不能用作

A a;

但可以用作

A*a =new a();

但我们无法通过使用释放内存

delete a;

那么什么时候推荐或更倾向于将析构函数声明为已删除?有成语吗?

【问题讨论】:

  • 可能用于“静态”类(只有静态成员)。
  • 在“过去”中,如果您只希望对象作为成员或在堆栈上工作,您会将 new 和 delete 标记为私有。=delete 以更合乎逻辑的方式提供相同的行为。
  • @Slava 哦不错 :)

标签: c++ c++11


【解决方案1】:

我不会说在任何实际生产代码中都推荐或首选它。

但是你可以想象一个例子,当你想确保一个对象不能被正常删除;一个示例可能是全局内存管理器对象或其他旨在比 main 更长寿的单例。没有析构函数的对象不能被删除。

我认为有更好的方法来实现这一点,比如封装/隐藏。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-17
    • 2011-06-21
    • 2014-08-01
    • 1970-01-01
    • 2011-12-13
    • 1970-01-01
    • 2014-04-24
    • 1970-01-01
    相关资源
    最近更新 更多