【问题标题】:It is useful to put a constant destructor? [closed]放置一个常量析构函数有用吗? [关闭]
【发布时间】:2015-10-23 11:14:54
【问题描述】:

我想知道将析构函数置于常量中是否有用? 例如:

类示例 { 上市 : 示例(整数参数); 常量 ~example(); //这里 }

【问题讨论】:

  • 这还能编译吗?
  • 那不是c。不要错误地标记您的问题
  • 目前尚不清楚您要使用 const 实现什么目标。你能解释一下吗?
  • 这只是为了知道是否可能

标签: c++ constants destructor


【解决方案1】:

从概念的角度来看,这没有任何意义。 const 函数没有副作用。因此,他们需要返回一些东西。由于析构函数不返回任何内容,因此该函数将毫无用处。

(顺便说一下,类似于const void 函数)

如 cmets 中所述,您仍然可以修改 const 中的 mutable 数据。

【讨论】:

  • 除非存在mutable 数据...
  • const 函数没有副作用是不正确的。它们可能会产生输出(例如写入文件、std::cout 等)。他们可以访问全局变量并更改它们。
  • 好点 - 我没有想到这一点。将其添加到答案中是否有意义?我觉得我原来的理解并不完全正确。
  • 谢谢,我是新手不知道
【解决方案2】:

没用,因为不可能:

错误:析构函数声明中不允许使用限定符

【讨论】:

    【解决方案3】:

    它没有用,通常会触发编译器的警告 - 通常是限定符被忽略的效果。

    从函数返回的const 限定符主要仅对返回指针或引用的函数有用(例如,指示返回的引用指向不应在逻辑上更改的对象)。析构函数不返回任何内容,因此 const 没有任何资格。

    使析构函数本身const(即~example() const)将被编译器拒绝。这是合适的,因为析构函数通常会改变对象的状态(导致它在逻辑上不再存在)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-20
      • 1970-01-01
      • 2015-07-15
      • 2015-12-09
      • 2018-01-17
      • 1970-01-01
      • 2015-07-16
      相关资源
      最近更新 更多