有人可以解释这个C++语法吗?

foo*_*oty 0 c++ constructor

可能重复:
构造函数中这个奇怪的冒号成员语法是什么?

嗨,我最近在C++程序中遇到了这种语法.这不是将参数传递给基类构造函数,因为我知道它看起来是什么以及如何编码它.这看起来像是类的某种变量初始化......这是代码:

class Particle
{
private:
  bool movable;
  float mass;
  Vec3 pos;
  Vec3 old_pos; 
  Vec3 acceleration;
  Vec3 accumulated_normal;
public:
  Particle(Vec3 pos)
  : pos(pos),
    old_pos(pos),
    acceleration(Vec3(0,0,0)),
    mass(1),
    movable(true),
    accumulated_normal(Vec3(0,0,0))
  {}

  Particle() {}

  // More unrelated code
};
Run Code Online (Sandbox Code Playgroud)

小智 6

初始化列表可用于初始化成员变量以及父项.这是编写构造函数的正确方法 - 像这样的初始化比在构造函数体中进行赋值更有效,并且在语义上可能更正确.

  • @Helper方法:实际上有点不清楚.它们*按照它们声明的顺序进行初始化,无论您在初始化列表中写入它们的顺序如何.因此,为了清楚起见,您可能*应该按照声明的顺序编写它们. (5认同)
  • @Helper但不在初始化列表中,订单不重要. (2认同)
  • @Stuart Golodetz:+1.大多数编译器实际上都会发出警告. (2认同)