我纠结的问题都在primer上有很好的解答
之前突然想到,为什么要存在冒号这种初始化方法,在google被墙,没办法只能求助于度娘。。。
冒号这种初始化方法,也叫做,初始化列表,也就是变量初始化的时候调用的
意味着,在一个类当中,一个成员变量只能在初始化赋值。
比如: const, 比如引用&。
举个例子:
class A
{
public:
A(i)
{
a = i;
b = i;
c = i;
}
private:
int a;
const int b;
int &c;
};
这样是不合法的, 因为b, c只能在初始化时赋值。
所以,只能如此初始化:
class A
{
public:
A(int i):a(i), b(i), c(i){}
private:
int a;
const int b;
int &c;
};
class A
{
public:
A():b(a-1), a(b-1)
{
cout<<b<<endl;
cout<<a<<endl;
};