初始化列表
- 成员初始化顺序与在列表中的顺序无关
- 成员的初始化顺序与在类中的声明顺序相同
- 初始化列表在构造函数执行前执行
类中的const成员
- 类中的const成员只能且必须在初始化列表初始化
- 类中的const成员本质是只读变量,有内存空间。不是常量,不会进符号表
#include
class Value
{
private:
const int value;
public:
Value(int i):value(i)
{
printf("i = %d, value= %d\n", i, value);
}
int get()
{
return value;
}
int set(int v)
{
int& ref = const_cast(value);
ref = v;
}
};
class Test
{
private:
Value v1;
Value v2;
Value v3;
public:
Test() : v2(2), v1(1), v3(3)
{
printf("Test::Test()\n");
v1.set(-1);
v2.set(-2);
v3.set(-3);
printf("v1 = %d, v2 = %d, v3= %d\n",v1, v2, v3);
}
};
int main()
{
Test t;
return 0;
}
G++编译器结果:
i = 1, value= 1
i = 2, value= 2
i = 3, value= 3
Test::Test()
v1 = -1, v2 = -2, v3= -3