构造函数中冒号后的变量

num*_*l25 22 c++ constructor ctor-initializer

我还在学习C++并试图理解它.我正在查看一些代码并看到:

point3(float X, float Y, float Z) :
x(X), y(Y), z(Z)  // <----- what is this used for
{
}
Run Code Online (Sandbox Code Playgroud)

位于构造函数参数旁边的"x(X),y(Y),z(Z)"是什么意思?

Joh*_*ler 22

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

point3( float X, float Y, float Z):
{
   x = X;
   y = Y;
   z = Z;
}
Run Code Online (Sandbox Code Playgroud)

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

  • **`PoD` ="普通旧数据" (5认同)
  • 澄清一下:如果成员是非PoD类型,则成员将不是默认构造的,如果使用初始化列表,则不需要在这些成员上调用复制构造函数.因此,它更有效率. (2认同)

vla*_*adr 5

在您的示例中point3,是具有相同名称的类的构造函数(),而左括号之前point3的冒号右侧的内容是初始化列表,它依次构造(即初始化)的成员变量(也可以用于将参数传递给基类中的构造函数(如果有)。):{point3