首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么我能够在引用初始化后重新绑定它?

为什么我能够在引用初始化后重新绑定它?
EN

Stack Overflow用户
提问于 2017-07-17 10:10:27
回答 2查看 307关注 0票数 4

据C++ Primer报道,斯坦利·利普曼、何塞·拉乔伊和芭芭拉·穆伊:

初始化后,引用仍然绑定到其初始对象。没有办法重新绑定引用来引用不同的对象。

那么,我如何在下面的代码中重新绑定初始化到另一个对象的引用呢?

代码语言:javascript
复制
#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是两个不同的对象。是的,但是两个完全不同的对象。

EN

Stack Overflow用户

发布于 2017-07-17 10:14:39

rnum1num1的另一个名称

当您编写rnum1 = ...时,如果要编写num1 = ...,就应该这样做,因为rnum1num1的另一个名称。

因此,引用本身并不是反弹到另一个变量,这里有一个简单的num1赋值。

要真正证明这一点,您可以打印num1num2rnum1的内存地址。

代码语言:javascript
复制
#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;
}
票数 4
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45141431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档