可能重复:
What is the member variables list after the colon in a constructor good for?
我找到了这个代码,它是Vector3f类的构造函数。
Vector3f::Vector3f()
: x(0)
, y(0)
, z(0)
{
}
这个定义是什么“:x(0),y(0),z(0)”是什么意思,我将如何使用它?
答案 0 :(得分:4)
这称为类初始化列表。必须有3个成员变量x y z
,它将所有变量设置为0。
查看http://www.cprogramming.com/tutorial/initialization-lists-c++.html
类初始化列表很简洁,因为它们允许您在执行构造函数中的代码之前设置类状态的初始值。这与在构造函数中分配值不同,并且可以做很多事情:
const
成员答案 1 :(得分:3)
在C ++中称为初始化列表。
初始化变量x
,y
和z
。
在这种情况下(假设x
,y
& z
为int
),它与以下内容相同:
x = 0
y = 0
z = 0
正如@Charles Bailey所指出的那样,如果类型不是int
,而是一些自定义用户定义的类,那么分配&建筑可能不是确切的等价物。
的说明:强>
在初始化程序列表中,类型为已初始化,方法是在每个变量上调用相应的默认构造函数,对于内置数据类型,如int
,这与赋值相同但是对于自定义类,构造函数操作可能与赋值操作不同。
答案 2 :(得分:1)
对于原始类型,它与
相同x = 0;
y = 0;
z = 0;
虽然实际上初始化列表和正文中的赋值之间存在细微差别。当我们通过初始化列表初始化字段时,构造函数将被调用一次。如果我们使用赋值,则首先使用默认构造函数初始化字段,然后使用实际值重新分配(通过赋值运算符)。