【问题标题】:Delete Operators and they equatable to a destructor in C++ [duplicate]删除运算符,它们等同于 C++ 中的析构函数 [重复]
【发布时间】:2013-06-14 00:19:33
【问题描述】:

这可能是一个简单的问题,但是:如果程序使用删除操作符,是否不需要析构函数?这是在“C++”中。

【问题讨论】:

  • delete 调用析构函数。尽管如此,用户定义的析构函数还是很少需要的,deleteing 也不是。
  • 不需要使用delete 运算符和析构函数是什么意思?你总是从编译器获得一个免费的析构函数。同样delete 应该与new 运算符一起使用,而析构函数与构造函数一起使用。
  • 感觉三参考规则来了……
  • @MichaelDorgan:自我实现的预言在行动!

标签: c++ destructor delete-operator


【解决方案1】:

delete 操作符不能替代析构函数...它将导致析构函数被调用。

如果您自己没有定义一个析构函数,编译器将提供一个默认析构函数。无论 默认析构函数就足够了,或者您是否需要提供自己的,是 将问题与您是否明确使用删除运算符完全分开,或者 只允许对象超出范围。

编辑:既然 Michael Dorgan 提到了,我不妨补充一下:

Rule of Three

三法则(也称为三巨头法则或大 三) 是 C++ 中的一条经验法则,它声称如果一个类定义 以下之一可能应该明确定义所有三个:

destructor
copy constructor
copy assignment operator

【讨论】:

  • 教授三法则为时已晚。 stackoverflow.com/q/4782757/103167
  • 也许,但不完全,我还要补充一点,很多地方还不允许在 C++11 中编码,所以它仍然有很大的价值。
猜你喜欢
  • 2014-03-13
  • 2016-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-30
  • 2015-08-04
  • 2017-04-04
相关资源
最近更新 更多