据C++ Primer报道,斯坦利·利普曼、何塞·拉乔伊和芭芭拉·穆伊:
初始化后,引用仍然绑定到其初始对象。没有办法重新绑定引用来引用不同的对象。
那么,我如何在下面的代码中重新绑定初始化到另一个对象的引用呢?
#include <iostream>
int main()
{
int num1 = 10;
int num2 = 20;
int &rnum1 = num1;
std::cout << rnum1 << std::endl; // output: 10
rnum1 = num2;
std::cout << rnum1 << std::endl; // output: 20
return 0;
}据我理解,num1和num2是两个不同的对象。是的,但是两个完全不同的对象。
发布于 2017-07-17 10:14:39
rnum1是num1的另一个名称
当您编写rnum1 = ...时,如果要编写num1 = ...,就应该这样做,因为rnum1是num1的另一个名称。
因此,引用本身并不是反弹到另一个变量,这里有一个简单的num1赋值。
要真正证明这一点,您可以打印num1、num2和rnum1的内存地址。
#include <iostream>
int main()
{
int num1 = 10;
int num2 = 20;
int &rnum1 = num1;
std::cout << rnum1 << std::endl; // output: 10
rnum1 = num2;
std::cout << rnum1 << std::endl; // output: 20
std::cout << &num1 << " " << &rnum1 <<" "<< &num2 << std::endl;
return 0;
}https://stackoverflow.com/questions/45141431
复制相似问题