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;
};

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM