2010-03-15 63 views

回答

8

壽命爲基準開始它的初始化之後(像所有變量),並且一旦它初始化它代表一個別名另一個變量。考慮:

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。它必須初始化爲一個值,並且它將保持其生命週期的值。因此,它也必須在初始化列表中初始化。

+0

@Sandeep - 這回答你的問題 – mukeshkumar 2010-03-15 06:40:36

+0

值得一提的是,一旦初始化,引用類型變量總是指向同一個對象; *它不能被修改爲指向另一個對象。* – jfs 2010-03-15 06:52:08

+0

但是爲什麼在初始化列表中而不是在構造函數內部(在C'tor的開放括號之後)進行初始化。 – Sandeep 2010-03-15 06:52:14

相關問題