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