我对C / C ++非常陌生,不确定调用该方法的方法。但那就是为什么我在这里试图找到答案。让我给你举个例子
MyClass::MyClass() : valueOne(1), valueTwo(2)
{
//code
}
其中valueOne和valueTwo是在主体外部分配值的类属性,这是什么方法调用的,为什么这样做。为什么不这样做呢
MyClass::MyClass()
{
valueOne = 1;
valueTwo = 2
//code
}
如果有人能帮助我,那就太棒了。
答案 0 :(得分:7)
这是一个initializer list。您可以使用构造函数后的初始化列表初始化成员变量。
默认情况下,构造函数将通过调用默认构造函数自动创建作为成员变量的对象。通过使用初始化列表,您可以指定使用其他构造函数。有时,如果您的成员变量没有没有参数的构造函数,则必须使用初始化列表。
答案 1 :(得分:2)
出于效率和性能原因,通常首选初始化列表(以前的样式)。就个人而言,我更喜欢它们的代码可读性原因,因为它将简单的初始化与构造函数本身中的任何复杂逻辑分开。
答案 2 :(得分:1)
这称为initialization list。它的主要用于性能(具有较大的对象)或一致性(具有内置类型,如int
)。
答案 3 :(得分:1)
首选初始化列表中的成员。在你的情况下它没关系,但是不可能初始化int&你在第二个代码片段中的方式。它是唯一可以将参数传递给基类构造函数的地方。
答案 4 :(得分:0)
另请注意,如果用于仅引用BASE类中的数据字段或成员函数,则可以在初始化程序列表中访问此指针。