我有一辆两级车和一个人。汽车有一个人类型的指针。 然后有这个功能
void f() {
vector<Car> v;
v.push_back(Car("ABC123", new Person("Johan")));
v.push_back(Car("XYZ789", new Person("Bo")));
v.push_back(Car("DEF456", new Person("Anna")));
copy(v.begin(), v.end(), ostream_iterator<Car>(cout, "\n"));
}
F有内存泄漏。 如果我想不想为堆上的obj分配内存,我应该用一个p变量替换指向汽车中的人吗?
将在f()中进行以下调用,
v.push_back(Car("ABC123", Person("Johan")));
还是F还会有问题吗?
答案 0 :(得分:1)
这实际上取决于你想做什么。对于您的测试代码是,您可以将Person值复制到(正确更改的)汽车类中。
但是你似乎在对象之间有关系,就像在数据库中一样。那么,你的前卫后期的人是否有房子,结婚等?那么每个人应该只有一个实例,你需要引用或指向它们。但是那时你会在f()之外“创造”那些人,也许在床上()。 ; - )