3

我对 C/C++ 非常陌生,不确定该方法被称为什么。但这就是为什么我在这里试图找到答案。让我给你看一个例子

MyClass::MyClass() : valueOne(1), valueTwo(2)
{
      //code
}

其中 valueOne 和 valueTwo 是在主体之外分配值的类属性,这是调用什么方法以及为什么要这样做。为什么不这样做

MyClass::MyClass()
{
      valueOne = 1;
      valueTwo = 2
      //code
}

如果有人可以帮助我,那就太好了。

4

5 回答 5

7

那是一个初始化列表。您可以在构造函数之后使用初始化列表来初始化成员变量。

默认情况下,构造函数将通过调用其默认构造函数来自动创建成员变量对象。通过使用初始化列表,您可以指定使用其他构造函数。有时,如果您的成员变量没有没有参数的构造函数,则必须使用初始化列表。

于 2010-04-14T03:12:33.937 回答
2

出于效率和性能的原因,通常首选初始化列表(前一种样式)。出于代码可读性的原因,我个人更喜欢它们,因为它将简单的初始化与构造函数本身中的任何复杂逻辑分开。

于 2010-04-14T03:19:17.693 回答
1

这称为初始化列表。它主要是为了性能(使用更大的对象)或一致性(使用内置类型,如int)。

于 2010-04-14T03:12:34.323 回答
1

最好在初始化列表中初始化成员。在您的情况下,这并不重要,但不可能像在第二个代码片段中那样初始化 int& 。它也是唯一可以将参数传递给基类构造函数的地方。

于 2010-04-14T03:16:03.817 回答
0

另请注意,如果仅用于引用 BASE 类中的数据字段或成员函数,则this指针可在初始值设定项列表中访问。

于 2010-04-14T04:09:48.667 回答