我还在学习C ++并试图理解它。我正在查看一些代码并看到:
point3(float X, float Y, float Z) :
x(X), y(Y), z(Z) // <----- what is this used for
{
}
构造函数参数旁边的“x(X),y(Y),z(Z)”是什么意思?
答案 0 :(得分:19)
这是一种调用point3类成员构造函数的方法。如果x,y和z是浮点数,那么这只是写这个
的一种更有效的方法point3( float X, float Y, float Z):
{
x = X;
y = Y;
z = Z;
}
但如果x,y&amp; z是类,那么这是将参数传递给构造函数的唯一方法
答案 1 :(得分:4)
在您的示例中point3
是具有相同名称(point3
)的类的 constructor ,以及冒号右侧的内容{开始括号:
之前的{1}}是initialization list,它反过来构造(即初始化){
的成员变量(也可用于将参数传递给构造函数)基类[es],如果有的话。)
答案 2 :(得分:0)
其他人指出的成员初始化。 但了解以下内容更为重要:
当参数属于float类型或其他内置类型时,除了使用成员初始化而不是赋值(在构造函数体中)在C ++中更具惯用性之外,没有明显的优势。
明显的优点是,如果参数是用户定义的类,则此成员初始化将导致调用复制构造函数而不是默认构造函数(如果使用赋值完成)(在构造函数体中)。