所有数据成员均可以用成员初始化器的形式来进行初始化,但是对于const数据成员和引用数据成员和成员对象必须用成员初始化器来初始化。成员初始化器出现在构造函数参数列表后和函数体之间,用冒号:来与参数列表区分。多个数据成员之间用逗号来区别。例:
Increment::Increment(int c, int i)
:count(c),increment(i){//count,increment均是类Increment的数据成员
//函数体为空
}
注意点:成员初始化列表在构造函数体执行之前执行。
完整的Increment程序示例:
--------------------------------------------------------------------------------------------
Increment.h//类接口
#ifndef INCREMENT_H
#define INCREMENT_Hf
class Increment{
public:
Increment(int c = 1, int i = 0 );void addIncrement(){
count += increment;
}void print()const;//const函数
private:
int count;
const int increment;//const常量
};
#endif---------------------------------------------------------------------------------------
Increment类接口的实现
#include <iostream>//引入流头文件
#include "Increment.h"//引入自己的头文件
using namespace std;Increment::Increment(int c, int i)
:count(c),
increment(i)//初始化列表器,在构造函数体被执行之前执行
{
//empty
}void Increment::print()const{
cout<<"count is : "<<count<<" increment is : "<<increment<<endl;
}
---------------------------------------------------------------------------------------------------
main()函数
#include <iostream>
#include "Increment.h"
using namespace std;int main(){
Increment value(10,5);//构造函数先初始化列表器
cout<<"Before Init !"<<endl;
value.print();//打印相应的数据成员
cout<<"After change !"<<endl;
for(int i = 1; i <= 3; i++){
cout<<"Now is number = "<<i<<endl;//打印出相应的循环次数
value.addIncrement();//把数据成员count的值加上increment
value.print();//再次打印结果
}
}