#include
using namespace std;
class A
{
private:
int n1;
int n2;
public:
A()
{
n2=0;
n1=n2+2;
}//輸出結果為:n1:2, n2: 0
A():n2(0),n1(n2+2){}//輸出結果為n1:-858993458, n2: 0
//上面這兩種方式有啥區別,求指導,為啥結果不一樣
void Print(){
cout << "n1:" << n1 << ", n2: " << n2 <<endl;
}
};
int main()
{
A a;
a.Print();
return 1;
}
類成員的初始化順序是他們在類定義中出項的順序,而不是他們在初始化列表中出現的順序。
所以在你的初始化列表中,n1 先初始化,這時引用了還沒有初始化的 n2 的值。