这是一个非常简单的问题,我有一个疑问,我想问每个人,
我们知道我们可以将引用声明为
int bar;
int &foo = bar;
我的问题是这次初始化背后的原因是什么?为什么这是必须的? 另外,为什么我不需要在声明时初始化指针?
int bar;
int *p;
p = &bar;
答案 0 :(得分:6)
根据定义,引用必须引用到有效对象或POD类型。不允许未初始化,特别是没有任何内容。此外,一旦初始化,它不能更改为引用其他东西。因此,初始化它的唯一地方是声明(或者如果它是成员变量,类构造函数的初始化列表)。
其他语言允许空引用和重新分配引用,但这不是它们在C ++中的工作方式。
答案 1 :(得分:5)
虽然指针可以为NULL(即,指向无),但引用必须始终指向某个内容;它没有NULL状态。因此,它无法在不进行初始化的情况下创建。