class CExample {
public:
int a;
float b;
//构造函数初始化列表
CExample(): a(0),b(8.8) {}
//构造函数内部赋值
CExample()
{
a=0;
b=8.8;
}
};
构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式
以下情况必须使用初始化列表:
1.成员类型是
没有默认构造函数的类
。若没有提供显示初始化式,则编译器隐式使用成员类型的默认构造函数,若类没有默认构造函数,则编译器尝试使用默认构造函数将会失败。
2.
const成员
或
引用类型
的成员。因为const对象或引用类型只能初始化,不能对他们赋值。
初始化列表的成员初始化顺序:
C++初始化类成员时,是
按照声明的顺序初始化的
,而不是按照出现在初始化列表中的顺序。
析构函数的顺序和类成员定义的顺序是相反的