难以理解引用定义
Trouble understanding reference definitions
我不太明白为什么如果 ri 是对 i 的引用,为什么它的输出是 10 10
...int i, &ri = i;
i = 5;
ri = 10;
std::cout << i << " " << ri << std::endl;
有人可以为我澄清这一点吗?
同样地
int i = 0, &r1 = i;
double d = 1, &r2 = d;
r2 = r1;
std::cout << r2; // output 0
i = r2;
std::cout << i; // output 0
r1 = d;
std::cout << r1; // output 0
如果 i = r2 并且 r2 是 d = 1 时的参考,为什么输出不是 1? 另外,当 r1 = d 时,为什么输出不是 1?
引用
就像寻址原始项目一样。喜欢*(&some_variable)
因此,在您的代码中
r2 = r1;
将 d
的值设置为 0
的 i
的值。
从那时起,所有值都0
如果将名称r1
替换为ref_i
并r2
ref_d
,这将是有意义的。
在这里试试:
http://ideone.com/SHxQLN
int i = 0, &ref_i = i;
double d = 1, &ref_d = d;
ref_d = ref_i; // <<-------------------- Put value of i into d
std::cout << ref_d;
i = ref_d;
std::cout << i;
ref_i = d;
std::cout << ref_i;
将引用视为对象的别名(替代名称)。无论你对一个引用做什么,你都会对它所引用的对象做什么。这里:
int i, &ri = i;
你说 ri 是 I 的另一个名字。因此,在这里:
i = 5;
你设置 i = 5,这里
ri = 10;
您设置 i = 10。
相关文章:
- 编译C++时未定义的引用
- 如何修复此错误:未定义对"距离(浮点数,浮点数,浮点数,浮点数,浮点数)"的引用
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- 对C宏的未定义引用,但在定义它时会出现重新定义错误
- 未定义的引用在哪里
- 编译时的 CImg 库返回对"__imp_SetDIBitsToDevice"的未定义引用
- 对Py_Initialize()的未定义引用
- 使用mysql c++连接器的未定义引用
- 未定义的引用 .. 使用 OpenCV 编译 C++ 代码时,从命令行
- 对 Scalar ::Scalar() 的未定义引用
- Xcode 语义问题引用或以前定义的代码
- 已定义函数时出现 G++ "未定义的引用"错误
- 链接 cmake 时出现未定义的引用错误
- 对复制 CTOR 和 CTOR 的未定义引用
- 将引用定义为函数调用 - 有什么好处?
- 为什么不将RVALUE引用定义为RVALUE表达
- 是右值引用定义行为的直接实例化
- 难以理解引用定义
- C++11通过引用定义函数类型捕获
- 可以引用定义在结构体内部的友元操作符吗?