C++進階——初始化列表

這段時間在研究老師上課講授的Linux程序設計代碼,在老師提供的庫函數中出現了初始化列表,忘記了先前學習的C++課程知識,所以決定重新學習C++初始化列表。

C++初始化列表是用來對成員變量進行初始化的。

使用一:基本數據類型成員變量的初始化,可以放在構造函數之中,也可以使用初始化列表進行初始化。如:

class CLPerson
{
public:
        CLPerson(int i):height(i)
        {}
private:
        int height;
};

或者:

class CLPerson
{
public:
        CLPerson(int i)
        {
                  height=i;
        }
private:
        int height;
};
使用二:const 成員變量的初始化必須使用初始化列表。

class CLPerson
{
public:
        CLPerson(int i):cHeight(height)
        {
                  height=i;
        }
public:
          int &cHeight;
private:
        int height;
};
上面的代碼中,類外可以通過cHeight訪問height(類似於定義了一個get方法),但在類外不能修改height,通過定義引用的方式做到了很好的數據封裝性,同時又方便在類外訪問私有數據成員。

使用三:當類的成員變量爲另一個類的對象時,必須使用初始化列表進行初始化。【類的成員對象必須初始化,但不能將成員對象直接在構造函數體內進行初始化

class CLMan
{
public:
       CLMan(string na,int ag)
       {
                 name = na ;
                 age = ag ;
       }
private:
       string name;
       int age ;
}
class CLPerson
{
public:
        CLPerson(int i):man(Smith,21),cHeight(height)
        {
                  height=i;
        }
public:
          int &cHeight;
private:
        CLMan man;
        int height;
};
另外:對象成員初始化時,必須有相應的構造函數,且多個對象成員的構造次序不是按初始化成員列表的順序,而是按各類聲明的先後次序進行的。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章