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