這段時間在研究老師上課講授的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;
};
另外:對象成員初始化時,必須有相應的構造函數,且多個對象成員的構造次序不是按初始化成員列表的順序,而是按各類聲明的先後次序進行的。