首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将延迟变量分配给引用变量

将延迟变量分配给引用变量
EN

Stack Overflow用户
提问于 2018-07-19 05:47:42
回答 2查看 46关注 0票数 0

如果我有以下指向vector的指针

代码语言:javascript
复制
vector<int> *v = new vector<int>(10);

在以下方面有何区别:

代码语言:javascript
复制
vector<int> &vr = *v;

代码语言:javascript
复制
vector<int> vr2 = *v;

根据我对引用的理解,对vrvr2的更改不会影响v。例如:

代码语言:javascript
复制
vr.at(0) = 5; 
vr2[1] = 6;
// v[0] and v[1] would not change to 5 and 6 respectively.

那么,vrvr2有什么区别呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-19 05:50:50

根据我对参考文献的理解,对vr和vr2的更改不会影响v.例如:

这是不正确的理解。

vr是对v指向的对象的引用。对vr的任何更改都将更改v指向的对象的内容。

另一方面,vr2是一个副本。对vr2所做的任何更改只影响vr2,而不影响v指向的对象。

票数 4
EN

Stack Overflow用户

发布于 2018-07-19 05:51:20

在第一个片段中

代码语言:javascript
复制
vector<int> &vr = *v;

引用声明为指向的向量v*vr*v上的操作现在将有相同的结果--这就是引用的本质。然而,在这里

代码语言:javascript
复制
vector<int> vr2 = *v;

您可以通过v2复制分配创建一个新的向量。新向量保存着*v在赋值时持有的相同的数据。它们现在是两个独立的对象,而改变一个并不会影响另一个。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51415189

复制
相关文章

相似问题

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