如果我有一个类如下:
class A {
private:
const int qsize;
public:
A(int qs = 10);
}
那么下面这种写法是错误的:
A::A(int qs) {
qsize = qs;
}
原因是因为,qsize是const的,只能被初始化,不能被赋值,这种情况下,应该怎么办呢?
c++给出了答案:成员初始化列表。
从概念上说,在执行构造函数时,对象会在执行括号里的代码之前被创建,分配内存,然后流程进入到括号里进行常规赋值操作,所以对于const成员,应该在赋值前进行初始化,即使用成员初始化列表。
这是一种C++提供的特殊语法:写法如下:
A::A(int qs) : qsize(qs) {
//...
}
这是一个很重要的知识点