码迷,mamicode.com
首页 > 编程语言 > 详细

C++类成员初始化列表的构造顺序

时间:2019-12-11 23:44:06      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:char   c++类   多少   变量声明   ret   ++   test   编译器   argc   

看下面代码, 输出结果是多少呢?

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进行初始化,然后j再对i进行初始化,那么i和j都是3。实施缺相反,初始化列表的初始化顺序与变量声明的顺序一致。也就是说,j先对i初始化,然后2再对j初始化。
故输出内容

0 // 这儿也不一定是0跟编译器有关。但一定不是3
3

C++类成员初始化列表的构造顺序

标签:char   c++类   多少   变量声明   ret   ++   test   编译器   argc   

原文地址:https://www.cnblogs.com/Hijack-you/p/12026314.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!