2010-03-15 25 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

相关问题