gpt4 book ai didi

c++ - 在堆或堆栈上分配对象

转载 作者:太空宇宙 更新时间:2023-11-04 11:38:13 25 4
gpt4 key购买 nike

我有一辆二等车和一个人。 car 有一个 person 类型的指针。然后就是这个功能

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 分配内存,我应该用 person p 变量替换指向 person in car 的指针吗?

f() 中的以下调用是否有效,

v.push_back(Car("ABC123", Person("Johan")));

或者 F 还会有问题吗?

最佳答案

这真的有点取决于你想做什么。对于您的测试代码,是的,您可以将 Person 值复制到(正确更改的)汽车类中。

但是你似乎在对象之间有关系,就像在数据库中一样。那么,你项目后期的人可以有房子、结婚等吗?那么每个人应该只有一个实例,你需要引用或指向它们。但是你会在 f() 之外的任何地方“创造”那些人,也许是在 bed() 中。 ;-)

关于c++ - 在堆或堆栈上分配对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22414120/

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