c++ - C++类内初始化与初始化列表 - SegmentFault 思否
C++11:深刻理解成员变量初始化顺序_c++变量初始化的顺序_@一鸣惊人的博客-CSDN博客
项目内review代码时,同事提出类内初始化与构造函数初始化的顺序问题。
struct test_t
{
uint32_t a = 14; // e
uint32_t b = 13; // e
int32_t c = 15; // f
test_t() {}
test_t(uint32_t base) : b(base) {}
}
考察上面结构体,并反汇编,发现上述结构体会在编译时产生2个构造函数。
1、默认构造函数,都使用类内初始化
2、带参数的构造函数,除列表中显示初始化的参数外,都使用默认值。
两个构造函数中各参数的顺序,都是声明的时候决定的。