关于C++构造函数初始化顺序
这里主要是说序列初始化成员变量时,存在这样的规则:
1. 先进行序列初始化,再进行构造函数函数体内的赋值等操作。
2. 序列初始化,不是简单的自左至右或自右至左,而是根据成员变量的定义顺序来初始化。
测试代码:
1 #include <iostream> 2 #include <algorithm> 3 4 using namespace std; 5 6 class lv 7 { 8 public: 9 lv(int g):g1(g++),g2(g++) 10 { 11 g3 = g++; 12 cout << g1 <<endl; 13 cout << g2 <<endl; 14 cout << g3 <<endl; 15 } 16 ~lv() 17 { 18 cout << "bye" << endl; 19 } 20 int g3; 21 int g2; 22 int g1; 23 }; 24 25 int main() 26 { 27 lv h(99); 28 29 return 0; 30 }
结果截图: