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