在构造函数旁边声明的属性

时间:2010-04-14 03:10:20

标签: c++ constructor ctor-initializer

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

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

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

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

如果有人能帮助我,那就太棒了。

5 个答案:

答案 0 :(得分:7)

这是一个initializer list。您可以使用构造函数后的初始化列表初始化成员变量。

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

答案 1 :(得分:2)

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

答案 2 :(得分:1)

这称为initialization list。它的主要用于性能(具有较大的对象)或一致性(具有内置类型,如int)。

答案 3 :(得分:1)

首选初始化列表中的成员。在你的情况下它没关系,但是不可能初始化int&你在第二个代码片段中的方式。它是唯一可以将参数传递给基类构造函数的地方。

答案 4 :(得分:0)

另请注意,如果用于仅引用BASE类中的数据字段或成员函数,则可以在初始化程序列表中访问指针。