在C ++中,我们不能在没有初始化的情况下声明引用。这是什么原因。虽然我们知道在运算符重载和其他概念中引用的使用。
答案 0 :(得分:1)
C ++引用(在该单词的普通C ++含义中)无法重新分配。因此,如果未初始化引用,则无法引用任何内容。并且该语言不支持空引用,因此,如果允许的话,未初始化的引用将总是出错。
答案 1 :(得分:0)
C ++引用实际上是伪装的指针,但它们导致更清晰的代码。引用只能引用单个对象(不能将其重新分配给其他对象)。 C ++引用不能是null
。然后想想它是如何未初始化的。
引用的行为类似于值类型,这也是它不能为空的另一个原因。将它视为另一个变量的别名。
int a = 3;
int& b = a;
auto c = b; // When you use references in such expressions,
// it behaves exactly like substituting the referred variable.
此处c
不是对a
或b
的引用,而是int
类型的引用。该值已从a
复制到c
。
以上代码相当于,
int a = 3;
int c = a;
在C中,它不支持引用,上面的代码写为
int a = 3;
int* b = a;
int c = *b;
引用会自动解除引用,无法null
并使代码清晰。
注意: 在C ++中,应该在构造函数中初始化作为类字段的引用。
class SomeClass {
int& a; // This is not an uninitialized reference. It should be initialized
// in the constructor. Otherwise the compiler will throw an error.
public:
SomeClass(int& b) : a(b) {}
};