1 常数据成员只能通过构造函数初始化表对其进行初始化
常数据成员只能通过构造函数初始化表对其进行初始化,任何其它函数都不能对常数据成员赋值。如类体中定义了常数据成员hour:
constint hour;//定义hour为常数据成员;
不能采用在构造函数中对常数据成员赋值的方法,下面的用法是非法的:
Time::Time(inth)
{hour= h;} // 非法,不能对之赋值
因为常数据成员是不能被赋值的。
如果在类体外定义构造函数,应写成如下形式:
Time::Time(inth):hour(h){} //通过参数初始化表对常数据成员hour初始化
常对象的数据成员都是常数据成员,因此在定义常对象时,构造函数只能用参数初始化表对常数据成员进行初始化。【???注意:在实际中常对象的数据成员是可以通过函数体进行初始化的】
—《C++面向对象程序设计(第2版)》P91-P92
分析:构造函数可以分为两个阶段:(1)初始化阶段(利用初始化列表完成);(2){}函数体赋值阶段。
所以:(