C ++クラスのメンバーリストを初期化する建設順序

以下のコードを見てみると、出力はどのくらいですか?

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

おすすめ

転載: www.cnblogs.com/Hijack-you/p/12026314.html