zoukankan      html  css  js  c++  java
  • c++中必须使用初始化列表初始化的的四种情况

    1. 必须使用初始化列表初始化一个引用成员;

    class CBase
    {
    public:
        CBase(int a) : m_a(a)  //正确,m_a是一个变量的引用,必须通过初始化列表初始化
        {
            // m_a = a;           //错误
            cout << "m_a:" << m_a << endl;
        }
    
    public:
        int& m_a;
    };

    2. 必须使用初始化列表初始化一个常量成员;

    class CBase
    {
    public:
        CBase(int a) : m_a(a)  //m_a是一个const常量,必须通过初始化列表初始化
        {
            //m_a = a;          //错误,此处相当于赋值操作,但是const是不可修改的,无法作为左值;
        }
    
    public:
        const int m_a;
    };

    3. 初始化派生类的基类时,必须使用初始化列表进行初始化;

    4. 当初始化话成员对象时,必须使用初始化列表进行初始化;

    class CBase
    {
    public:
        CBase(int a) : m_a(a)  //m_a是一个const常量,必须通过初始化列表初始化
        {
            //m_a = a;          //错误,此处相当于赋值操作,但是const是不可修改的,无法作为左值;
        }
    
    public:
        const int m_a;
    };
    
    
    class CSub
    {
    public:
        CSub() : m_obj(88)    //正确, 成员对象初始化
        {
            cout << "this is m_obj::m_a = " << m_obj.m_a << endl;
        }
    
    public:
        CBase m_obj;
    };
    青青园中葵,朝露待日晞。 阳春布德泽,万物生光辉。 常恐秋节至,焜黄华叶衰。 百川东到海,何时复西归? 少壮不努力,老大徒伤悲!
  • 相关阅读:
    李洪强九宫格的实现
    iOS开发多线程篇 11 —自定义NSOperation
    CALayer3-层的属性
    网络编程小结
    iOS开发多线程篇 10 —NSOperation基本操作
    CALayer2-创建新的层
    iOS开发之多文件上传
    三级联动
    用 ERD 盘解决 Win8 自己主动更新后不能启动的问题
    hdu1028(母函数+DP)
  • 原文地址:https://www.cnblogs.com/weiyouqing/p/14598387.html
Copyright © 2011-2022 走看看