1.构造函数的初始化列表就是在构造函数形参表后面以一个冒号开始,接着是一个逗号分隔的数据成员列表,每个数据成员后面跟一个放在圆括号中的初始化式。如下所示:
2.为什么需要构造函数初始化列表呢? 一般情况下,如果没有初始化列表,可以在构造函数体中对数据成员赋值,两者的效果是一样的,但是在以下三种情况时候,初始化列表是必须的:
(1)没有默认构造函数的类类型成员。因为如果没有为该类成员提供初始化式,则编译器会隐式地使用成员类型的默认构造函数。如果那个类没有默认构造函数,则编译器尝试使用默认构造函数将会失败。在这种情况下,必须提供初始化式。
(2)当数据成员是const类型时。因为不能采用在构造函数体内对该const类型数据成员赋值的方法。
(3) 当数据成员是引用类型时。因为引用类型的对象只能被初始化不能被赋值。
3.成员初始化的次序是就是声明成员的次序,最好按照与成员声明顺序一致的次序编写构造函数的初始化列表,此外,尽可能避免使用成员来初始化其他成员。
4.注意:构造函数初始化式只在构造函数的定义中而不是声明中指定。