构造函数初始化列表中使用的变量的顺序是否重要?

Vin*_*nay 2 c++ memory constructor initialization-list

考虑下面的课程

class A 
{
int a;
double b;
float c;
A():a(1),c(2),b(3)
{}
}
Run Code Online (Sandbox Code Playgroud)

我们是否必须按照我们在类中声明的顺序使用初始化列表中的变量?初始化列表中的变量顺序是否会对该类/变量的内存分配产生影响?(考虑一下场景,如果类有很多bool变量,很多双变量等等.)

Jar*_*d42 5

我们是否必须按照我们在类中声明的顺序使用初始化列表中的变量?

初始化顺序列表对初始化顺序没有影响.因此,它避免了在初始化列表中使用实际顺序的误导行为.

遇到依赖时会出现问题:

class A 
{
  int a;
  double b;
  float c;
  // initialization is done in that order: a, b, c
  A():a(1), c(2), b(c + 1) // UB, b is in fact initialized before c
  {}
};
Run Code Online (Sandbox Code Playgroud)

初始化列表中的变量顺序是否会对该类/变量的内存分配产生影响?

初始化顺序列表对布局或初始化顺序没有影响.