【发布时间】:2015-11-08 18:39:40
【问题描述】:
来自 Java,我对如何正确访问存储在向量中的对象感到困惑。
在这个测试用例中,我希望两个输出都显示相同的数字 (2):
#include <iostream>
#include <vector>
using namespace std;
class Item {
public:
int id = 0;
Item(int id)
{
this->id = id;
}
};
int main()
{
vector<Item> items;
Item item = Item(1);
items.push_back(item);
Item itemFromVector = items.at(0);
itemFromVector.id = 2;
cout << "item: " << item.id << endl;
cout << "itemFromVector: " << itemFromVector.id << endl;
}
// output:
// item: 1
// itemFromVector: 2
【问题讨论】:
-
你不需要向量来观察这种现象。
Item item = Item(1); Item item2 = item; item2.id = 2; cout << item.id << endl;. -
在您的测试用例中,
item是一个对象,itemFromVector是另一个单独的对象,并且向量存储另一个对象,与上述两个不同。每个人都有自己的数据副本。 -
好吧,但是你如何在 C++ 中做到这一点?我不应该使用矢量吗?
-
顺便说一句,
Item item = Item(1);是多余的 javaism。Item item(1);就足够了。