gpt4 book ai didi

c++ - 将地址推送到 vector 后更改对象

转载 作者:搜寻专家 更新时间:2023-10-31 00:42:23 25 4
gpt4 key购买 nike

我有一个问题:

class B : public class A {
public:
vector<int*> vec;
};

class A {
};

vector<A*> vec_a;
vector<B*> vec_b;

如果我将 B 类的对象推回到两个 vector 中。

B* b = new B;
vec_a.push_back(b);
vec_b.push_back(b);

之后,我在 B 类的对象中更改了一些内容,

例如:

int* i = ....
vec_b[0].push_back(i);

vec_a 有变化吗?

我对此感到困惑,因为我已经检查过当 vector push_back 时,它只会创建一个拷贝。但是当我检查上面的代码时,它发生了变化。这两个 vector 是否拥有对象 b 的共享内存?

谢谢

最佳答案

是的,当推送到 vector 时,会创建一个拷贝。但是在您的情况下,它是一个指针的拷贝,而不是实际对象的拷贝。

关于c++ - 将地址推送到 vector 后更改对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12086088/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com