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变量,很多双变量等等.)
我们是否必须按照我们在类中声明的顺序使用初始化列表中的变量?
初始化顺序列表对初始化顺序没有影响.因此,它避免了在初始化列表中使用实际顺序的误导行为.
遇到依赖时会出现问题:
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)
初始化列表中的变量顺序是否会对该类/变量的内存分配产生影响?
初始化顺序列表对布局或初始化顺序没有影响.
| 归档时间: |
|
| 查看次数: |
694 次 |
| 最近记录: |