【发布时间】:2023-04-02 00:45:02
【问题描述】:
我有一个汽车向量
std::vector<Car> cars;
我的问题是为什么下面的迭代会产生不同的结果
for ( Car c : cars){
std::cout << c.getID() << "--" << &c << std::endl;
}
这导致固定地址如下:
1--0x61fef0
2--0x61fef0
3--0x61fef0
4--0x61fef0
虽然以下迭代导致每个项目的地址唯一:
for(int i = 0; i < 4; i++){
std::cout << cars[i].getID() << "--" << &cars[i] << std::endl;
}
结果:
1--0x8d18e8
2--0x8d18ec
3--0x8d18f0
4--0x8d18f4
我的问题是为什么?
【问题讨论】:
-
因为在第一个版本中,您正在获取向量中对象的副本地址。将其更改为
for ( Car c& : cars),您将获得与第二个版本相同的结果。
标签: c++