以下のコードを見てみると、出力はどのくらいですか?
class A{
public:
A(int k) : j(k), i(j)
{
}
void show()
{
cout << this->i << endl;
cout << this->j << endl;
}
private:
int i;
int j;
};
void test()
{
A a(3);
a.show();
}
int main(int argc, char const *argv[])
{
test();
return 0;
}
ここでは、3 jに初期化することを考えるのは簡単で、i、jはその後、i、jは3である、再び初期化されます。反対の実装の欠如、初期化シーケンスおよびリストの初期化変数の宣言の同じ順序。すなわち、最初、jのiの初期化され、その後、再びJ 2が初期化されています。
出力内容だから、
0 // 这儿也不一定是0跟编译器有关。但一定不是3
3