2016-04-11 102 views
2

我试过四处寻找答案,但至今没有运气。我的问题是 - 为什么参考变量在定义时需要初始化?这是技术原因,还是标准不允许的?为什么参考变量需要在定义时初始化?

拿这个代码,例如:

int number = 42; 
int& numberRef; 
numberRef = number; 

上面是不允许的,但下面的代码是:

int number = 42; 
int& numberRef = number; 

为什么不能编译器把一个未初始化的引用变量像一个未初始化指针?有什么我在这里失踪?

+1

引用不能被反弹:有一个句法语义歧义,并且它通过定义指定给一个基准实际上意味着分配给被称为对象,由此参考的初始化仅结合所述参考解决引用的对象。 –

+0

如果会有未初始化的引用,为什么我们需要它们呢?我们已经有了指针。 – Drop

+1

@Drop,避免在我们的代码中编写' - >':) – Chiel

回答

8

如果引用未初始化,则无法对其进行初始化,因为任何分配给引用的尝试都会将其分配给其所指对象。

int& numberRef;  // pretend this is allowed 
numberRef = number; // copies number into some random memory location 
+0

啊,我正在重新考虑它..再次。 –

相关问题