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

Why do reference variables need to be initialized at definition?

我试过四处寻找答案,但到目前为止还没有成功。我的问题是——为什么引用变量在定义时需要初始化?是技术原因,还是标准不允许?

以这段代码为例:

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