C++类几种初始化的顺序
首先给段代码:
1 class A{ 2 public: 3 int x=0; 4 A():x(1){cout<<"A(): x="<<x<<endl;} 5 A(int a):x(a){cout<<"A(int a): x="<<x<<endl;} 6 A(int a,int b):x(a){ 7 cout<<"A(int a,int b): x="<<x; 8 x=9; 9 cout<<" "<<"x="<<x<<endl; 10 } 11 }; 12 int main(){ 13 A x1; 14 A x2(3); 15 A x3(5,7); 16 getchar(); 17 }
输出:
可以看到顺序为成员变量声明时初始化>>>列表初始化>>>构造函数内部初始化
另外如果列表初始化有多个变量,初始化的顺序是按照类中最初声明的顺序来的,而不是按你写的A():a(1),b(2),c(3){}就会一定按a>>>b>>>c去初始化的!
进击的小🐴农