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

标签 c++

我有一辆二等车和一个人。 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/

相关文章:

c++ - #ifndef 和#pragma once 的问题

c++ - C++ 访问部分可以交错吗?

c++ - 更改已运行函数 C++ 中的变量

c++ - 是否为派生类生成移动构造函数/赋值运算符

c++ - inline void addTask(Task task) vs inline void addTask(const Task &task)

c++ - 帮助类型特征

c++ - SendMessageA 方法的链接错误/冲突

c++ - 为读和写重载运算符 []

c++ - 没有错误,但没有输出

C++,在类变量中添加条件