class Book{
public:
Book( int s );
private:
int i;
const int j;
int &k;
};
//第一種
Book::Book( int s ){
i = s;
j = s;
k = s;
}
//第二種
Book::Book( int s ): i(s), j(s), k(s){}
解釋:第一種構造函數有錯,而第二種正確。
即在c++中,const成員和引用成員必須在初始化列表中初始化,而不能在構造函數體內初始化。
爲什麼?
因爲在進入構造函數體內時,引用變量和const變量都已經用不確定的值初始化好了,構造函數內能做的只有賦值,而const類型和引用類型是不可以賦值的。所以,需要在初始化列表中初始化。