2、构造函数的初始值列表
1、成员变量的赋值、初始化
对于变量,我们可以先定义(此时会执行默认初始化),再赋值(赋值形式)、或者可以定义的时候直接初始化(直接初始化形式)。对于类的成员变量来说,也存在赋值、初始化两种不同的方式。
2、成员变量两种方式的实现
(1)直接初始化形式
CCar::CCar(int p,int tr,int w):price(p),tyre(tr, w)
{
};
(2)先默认初始化,再赋值赋值形式
CCar::CCar(int p,int tr,int w):price(p),tyre(tr, w)
{
price = p;
tyre = CTyre(tr,w);//要实现深拷贝
};
直接初始化方式,构造函数后面的这个列表被称为初始值列表。
3、有时必须使用直接初始化形式
例如:
(1)成员为const
(2)成员为引用
上述两种情况必须使用初始值列表进行对对象的成员变量直接初始化。
4、成员变量初始化的顺序
成员的初始化顺序与其在类的定义中出现的次序一致,与初始值列表中的次序无关。最好令构造函数的初始值列表的次序与成员声明次序一致。应该尽量用某些类的成员初始化其它成员。