代码示例:
#include <iostream>
#include <vector>
using namespace std;
class Man {
public:
Man() {}
void getPlay() { //玩一次喝十杯酒
count += 10;
cout << "I'm playing..." << endl;
}
int getCount() {
return count;
}
private:
int count = 0; //喝了几杯酒
};
int main(void) {
Man zhangFei, guanYu, liuBei; //刘备,关羽,张飞
vector<Man> men;
men.push_back(liuBei); //只是值的拷贝
men.push_back(guanYu);
men.push_back(zhangFei);
men[0].getPlay(); //玩一次
cout << men[0].getCount() << endl;
cout << liuBei.getCount() << endl;
return 0;
}
输出结果:
men[0].getCount() == 10
liuBei.getCount() == 0
???为什么会这样?对象liuBei不就是对象men[0]吗?
因为,对象liuBei与对象men[0]不是同一个对象!
所以,可以知道下面这条语句是把对象liuBei值拷贝到对象men[0],这是两个不相关的对象!!!
men.push_back(liuBei);
men[0]与liuBei的关系,如图: