據我所知,要在類中初始化引用成員變量我必須使用初始化列表使用參數化構造函數來初始化成員變量。 另外我明白,沒有必要的默認構造函數。引用成員變量初始化錯誤與默認的構造函數
問:
,但我不明白的是,爲什麼定義了默認的構造函數拋出編譯錯誤? 編譯器是否足夠聰明以在下列情況下考慮參數化構造函數而不是拋出錯誤?
如果所有上述問題都有令人信服的答案,那麼爲什麼編譯器允許聲明默認構造函數(沒有定義)?它在這裏有什麼不同?
:
class SomeClass
{
public:
//SomeClass(){} //THIS IS AN ISSUE
//SomeClass(); //THIS IS FINE THOUGH
SomeClass(int j):i(j){}
int& i;
};
int main()
{
SomeClass obj(2);
return 0;
}
我相信同樣是const成員函數過的行爲。引用和const成員變量的原因是否相同?
你也可能想重新考慮擁有一個引用成員 - 這很少是一個好主意。 –