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

    0 // 这儿也不一定是0跟编译器有关。但一定不是3
    3
    
  • 相关阅读:
    加载中动画
    跑步动画
    关键帧动画
    animate.css
    怪异盒子
    弹性项目属性
    改变元素大小
    Linux 文件系统 --磁盘I/O
    Linux 文件系统
    Sample Test Strategy
  • 原文地址:https://www.cnblogs.com/Hijack-you/p/12026314.html
Copyright © 2011-2022 走看看