31

我仍在学习 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)”是什么意思?

4

3 回答 3

33

这是一种调用 point3 类成员的构造函数的方法。如果 x、y 和 z 是浮点数,那么这只是一种更有效的编写方式

point3( float X, float Y, float Z):
{
   x = X;
   y = Y;
   z = Z;
}

但是如果 x, y & z 是类,那么这是将参数传递给它们的构造函数的唯一方法

于 2010-02-28T03:44:09.010 回答
5

在你的例子中point3是同名构造函数(用于将参数传递给基类[es]中的构造函数,如果有的话。)point3:{point3

于 2010-02-28T03:37:55.193 回答
0

正如其他人指出的那样,成员初始化。但更重要的是要了解以下内容:

当参数是浮点类型或其他内置类型时,除了使用成员初始化而不是赋值(在构造函数的主体中)在 C++ 中更惯用之外,没有明显的优势。

明显的优势是,如果参数是用户定义的类,则此成员初始化将导致调用复制构造函数,而不是使用赋值完成的默认构造函数(在构造函数的主体中)。

于 2010-02-28T03:49:04.770 回答