为什么引用变量需要在声明时初始化

时间:2017-05-04 03:11:26

标签: c++

这是一个非常简单的问题,我有一个疑问,我想问每个人,

我们知道我们可以将引用声明为

int bar;
int &foo = bar;

我的问题是这次初始化背后的原因是什么?为什么这是必须的? 另外,为什么我不需要在声明时初始化指针?

int bar;
int *p;
p = &bar;

2 个答案:

答案 0 :(得分:6)

根据定义,引用必须引用到有效对象或POD类型。不允许未初始化,特别是没有任何内容。此外,一旦初始化,它不能更改为引用其他东西。因此,初始化它的唯一地方是声明(或者如果它是成员变量,类构造函数的初始化列表)。

其他语言允许空引用和重新分配引用,但这不是它们在C ++中的工作方式。

答案 1 :(得分:5)

虽然指针可以为NULL(即,指向无),但引用必须始终指向某个内容;它没有NULL状态。因此,它无法在不进行初始化的情况下创建。

相关问题