初始化列表的使用

时间:2020-12-02 19:39:48

类中可以定义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;
}

初始化列表是先于构造函数的函数体执行,并且成员的初始化列表与成员的声明顺序相同的