2
爲什麼不能在構造函數大括號({})中初始化Const和引用varibales,並且始終通過初始化列表爲什麼我們不能在構造函數大括號({})中初始化Const和引用varibales,並且始終通過初始化列表完成
謝謝, 和Sandeep
爲什麼不能在構造函數大括號({})中初始化Const和引用varibales,並且始終通過初始化列表爲什麼我們不能在構造函數大括號({})中初始化Const和引用varibales,並且始終通過初始化列表完成
謝謝, 和Sandeep
壽命爲基準開始它的初始化之後(像所有變量),並且一旦它初始化它代表一個別名另一個變量。考慮:
int& x;
/// ...
SomeClassConstructor(void)
{ // initialization list is done, reference lifetime has begun, and
// therefore is an alias. It already must alias a variable, then.
x = 5; // setting whatever x is an alias for to 5
}
您會看到,一旦我們進入構造函數,就會初始化所有成員變量。作爲參考,這意味着它必須指的是一個變量。 Ergo,我們必須初始化它以引用初始化列表中的某些內容。
同樣,分配給const
變量也是非法的:const int x = 5; x = 2; // doesn't compile
。它必須初始化爲一個值,並且它將保持其生命週期的值。因此,它也必須在初始化列表中初始化。
@Sandeep - 這回答你的問題 – mukeshkumar 2010-03-15 06:40:36
值得一提的是,一旦初始化,引用類型變量總是指向同一個對象; *它不能被修改爲指向另一個對象。* – jfs 2010-03-15 06:52:08
但是爲什麼在初始化列表中而不是在構造函數內部(在C'tor的開放括號之後)進行初始化。 – Sandeep 2010-03-15 06:52:14