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?
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?
您不能将非const
引用绑定到const
值。编译器应该给你一个错误:
从“const int”类型的表达式中对“int&”类型的引用进行无效初始化</p>
即使您确实解决了这个问题(例如,使用 a const_cast
),代码也会有未定义的行为,因为您正在修改原始const
值。
我是否将内存中的任何空间作为参考?
这是一个实现细节 - 它可以完全优化。您需要知道的是,这j
只是i
.
首先,您正在&j
按照 Luchian 所说的那样进行无效初始化。
引用只是变量内存位置的名称。您可以通过原始变量名或引用访问变量的内容。您可以阅读以下声明:
int &j=i;
作为:
j
是一个初始化为 的整数引用i
。
嗯,它们的占用空间是依赖于实现的,并不是说它们存储在某个地方,你可以把它们看作是一个标签。
来自 C++ 标准(§ 8.3.2 #4)
未指定引用是否需要存储
重点是我的。
*注意-- *引用通常用于函数参数列表和函数返回值。
尝试将引用分配给常量值时出错“错误 C2440:'initializing':无法从 'const int' 转换为 'int &'”