【问题标题】:Member initializer list in definition or declaration?定义或声明中的成员初始化列表?
【发布时间】:2012-10-24 14:51:09
【问题描述】:

我是否应该在构造函数声明中声明一个类的成员初始化列表:

class A
{
public:
    A(int data) : theData(data);
};

或在构造函数定义中:

A::A(int data) : theData(data)
{
    // code...
};

还是没关系?如果你以某种方式这样做,为什么?

【问题讨论】:

  • 你交换了定义 声明。前者是声明,后者是定义。
  • -1 因为这对于(a)在你的书中查找,并且(b)在两分钟内自己尝试是微不足道的。我们希望在 Stack Overflow 进行一定程度的先前研究,您应该在将近两年后知道。
  • "Initialiser list" 通常表示其他东西(周围有{} 的东西)。说“成员初始化器 [list]”或“ctor-initialiser”。
  • @LightnessRacesInOrbit 刚学C++,非常感谢。我只是想知道在声明中是否有办法做到这一点。
  • @leemes:“member initiali[z]er”不是“错误的术语”——它是标准中使用的术语。相比之下,将它用于“初始化列表”(即使省略了“成员”)会产生零结果。

标签: c++ constructor initializer


【解决方案1】:

您只能在构造函数的定义中包含成员初始值设定项列表。它是定义的一部分。

【讨论】:

  • 也可以在类中内联,只需在函数列表后加{}即可。
猜你喜欢
  • 2019-09-10
  • 1970-01-01
  • 1970-01-01
  • 2014-07-31
  • 2011-07-14
  • 2012-02-26
  • 2021-07-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多