类中可以定义const变量
例如:
class Demo
{
const int ci;
public:
void get_ci()
{
return ci;
}
};
当直接用这个类定义一个对象时,出错没有初始化const成员;
const用于类中成员变量时,将类成员变为只读属性(不能出现在“=”的左边)。但在类中仍可以用一个指针来修改其值。
所以不可以直接在类的构造函数中初始化const 的成员。
初始化列表所在位置:
构造函数():初始化列表
{
}
规则如:
classname:: classname(): m1(v1),m2(v1,v2)...//v1对m1初始化,v1、v2对m2初始化
{
}
#include<iostream>
using namespace std;
class Demo
{
private:
const int ci;
public:
Demo() :ci(10)
{
}
int getci()
{
return ci;
}
int setci(int i)
{
int* mi =(int *) &ci;
*mi = i;
return ci;
}
};
int main()
{
Demo d;
cout << "ci=" << d.getci();
d.setci(90);
cout << "ci=" << d.getci();
getchar();
return 0;
}
初始化列表是先于构造函数的函数体执行,并且成员的初始化列表与成员的声明顺序相同的