0

Suppose if I write the following code

int i=10;
int &j=i; //a reference in C++,don't confuse it with pointers & address

Does j takes any space in the memory as its simply a reference?

4

3 回答 3

3

您不能将非const引用绑定到const值。编译器应该给你一个错误:

从“const int”类型的表达式中对“int&”类型的引用进行无效初始化</p>

即使您确实解决了这个问题(例如,使用 a const_cast),代码也会有未定义的行为,因为您正在修改原始const值。

我是否将内存中的任何空间作为参考?

这是一个实现细节 - 它可以完全优化。您需要知道的是,这j只是i.

于 2013-07-25T09:20:55.633 回答
0

首先,您正在&j按照 Luchian 所说的那样进行无效初始化。

引用只是变量内存位置的名称。您可以通过原始变量名或引用访问变量的内容。您可以阅读以下声明:

int &j=i;

作为:

j是一个初始化为 的整数引用i

嗯,它们的占用空间是依赖于实现的,并不是说它们存储在某个地方,你可以把它们看作是一个标签。

来自 C++ 标准(§ 8.3.2 #4)

指定引用是否需要存储

重点是我的。

*注意-- *引用通常用于函数参数列表和函数返回值。

于 2013-07-25T09:31:36.100 回答
0

尝试将引用分配给常量值时出错“错误 C2440:'initializing':无法从 'const int' 转换为 'int &'”

于 2013-07-25T09:26:27.987 回答