这段时间在研究老师上课讲授的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;
};
另外:对象成员初始化时,必须有相应的构造函数,且多个对象成员的构造次序不是按初始化成员列表的顺序,而是按各类声明的先后次序进行的。