为什么引用变量需要在定义时初始化

Why do reference variables need to be initialized at definition?

本文关键字:定义 初始化 引用 变量 为什么      更新时间:2023-10-16

我试着四处寻找答案,但到目前为止运气不佳。我的问题是,为什么引用变量在定义时必须初始化?这是技术原因,还是标准不允许?

以这个代码为例:

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

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

int number = 42;
int& numberRef = number;

为什么编译器不能像对待未初始化指针一样对待未初始化的引用变量?我这里缺什么了吗?

如果引用未初始化,则无法初始化它,因为任何分配给引用的尝试都会分配给它的引用。

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