在初始化列表中,成员变量的初始化顺序是其在类中声明顺序,而非列表中的顺序

下面通过两个例子来说明问题
#include<iostream>
#include<vector>
using namespace std;

class Test{
public:
    int a;
    int b;
public:
    Test(int val):a(b),b(val){
        cout<<"init is susseccful"<<endl;
    };

    void output(){
        cout<<"a:"<<a<<endl;
        cout<<"b:"<<b<<endl;
    }

    // ~Test();
};

int main()
{
    Test t(10);
    // t.output();
    t.output();
    system("pause");
    return 0;
}

类成员变量的初始化顺序_初始化列表
注意:上下代码中的变量的声明顺序和列表中的顺序

#include<iostream>
#include<vector>
using namespace std;

class Test{
public:
    // int a;
    int b;
    int a;
public:
    Test(int val):a(b),b(val){
        cout<<"init is susseccful"<<endl;
    };

    void output(){
        cout<<"a:"<<a<<endl;
        cout<<"b:"<<b<<endl;
    }

    // ~Test();
};

int main()
{
    Test t(10);
    // t.output();
    t.output();
    system("pause");
    return 0;
}

类成员变量的初始化顺序_初始化列表_02