首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >保留向量值的副本,然后将其覆盖

保留向量值的副本,然后将其覆盖
EN

Stack Overflow用户
提问于 2012-05-28 00:11:01
回答 4查看 98关注 0票数 1

我有一些类似如下的代码:

代码语言:javascript
运行
复制
MyClass* a = new MyClass();
vector[0] = *a;

MyClass KeepCopy = vector[0];

//
//
vector gets changed
//
//

return KeepCopy

现在向量做了很多事情,然后被覆盖了。但是,我希望在函数的末尾返回KeepCopy的值。但是,因为向量没有指向其他东西,所以我认为返回的数据是错误的。

EDIT3:好的,事情是这样的。KeepCopy被赋值给向量,然后在代码中,我对向量做了一些事情。我在想,KeepCopy仍然指向向量的一个版本,但看起来KeepCopy只包含赋值时的值的副本。

稍后,我将向量赋给另一个向量对象(我一次读取两行文本文件,向量包含一行,另一个向量对象包含第二行)。如何确保KeepCopy指向原始的向量元素(在我开始解析文本文件中的每一行之前,重新分配向量)?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-05-28 00:16:53

由于您是按值(而不是按指针/引用)存储对象,因此对vector[0]的更改不会反映在KeepCopy中,除非您在MyClass实例中共享指向同一包含对象的指针

如果是这样的话,你应该实现一个合适的复制构造函数来制作原始文件的深拷贝(而不是默认的浅拷贝,它只是盲目地拷贝指针的值)。

票数 1
EN

Stack Overflow用户

发布于 2012-05-28 00:15:22

实现MyClass的复制构造函数并复制对象。而不是指针。

票数 1
EN

Stack Overflow用户

发布于 2012-05-28 00:17:13

与您所做的完全一样:MyClass KeepCopy = vector[0];KeepCopy设置为原始对象的副本(通过其复制构造函数)。此副本与向量没有连接,因此它不会受到修改向量的影响。

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

https://stackoverflow.com/questions/10775398

复制
相关文章

相似问题

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