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



你可能感兴趣的:(C++进阶——初始化列表)