c++ - 难以理解引用定义

标签 c++ 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

如果当 d = 1 时 i = r2 并且 r2 是对 d 的引用,为什么输出不是 1?另外,当 r1 = d 时,为什么输出不是 1?

最佳答案

引用就像对原始项目进行寻址。像 *(& some_variable)

因此在您的代码中有一行

r2 = r1;

d 的值设置为 i 的值,即 0

从那时起所有值都是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;  

关于c++ - 难以理解引用定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19150307/

相关文章:

c++ - 在数组中存储一个大于 9 的数字

perl - 如何引用 Perl 中的数组切片?

python - 如何在不复制对象的情况下将 var 添加到 Python 列表中?

c++ - 如果函数采用引用参数,则代码覆盖率缺少分支

java - 在面向对象编程中,对象是方法调用的一部分吗?

function - 有没有办法在 Lua 中将本地函数按任意顺序排列?

c++ - Qt5+ 如何为 QMediaPlayer 设置默认音频设备

C++ 中止核心在执行结束时转储

c++ - 同时从不同线程写入套接字时会发生什么?