在堆或堆栈上分配对象
Allocate object on heap or stack
我有两类车和人。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()之外的任何地方"创造"这些人,也许在床上()。: -)
相关文章:
- 使用操作重载对象重新分配对象
- 静态分配对象的值初始化
- C++ 将抽象类型的动态分配对象传递给函数并存储在向量中
- 堆分配对象中的堆栈对象在 c++ 中在哪里分配?
- 在 c++ 的构造函数中分配对象向量时出错
- 动态分配对象中的字段-动态分配更好还是静态分配更好?C++
- 操作后通过运算符分配对象
- 如何捕获源自静态分配对象的构造函数的异常?
- 在C++中,当重新分配对象时,为什么构造函数在析构函数之前触发?
- 如何使用每个对象的单个构造函数参数动态分配C++对象数组?
- 将动态分配对象传递到 boost::any 构造函数中
- 混合指向已分配对象和作用域对象的指针
- C 删除指向动态分配对象的指针
- 有关动态分配对象的问题
- 类的堆分配对象是否在其作用域之后但在 C++ 中调用其析构函数之前处于活动状态
- C++ 中的黑白堆分配对象和堆栈分配对象的性能差异
- 是隐式创建的默认构造函数,负责分配对象内存
- 如何删除用于动态分配对象的智能指针
- 分配对象数组时如何初始化每个对象
- 用于堆栈分配对象的C++虚拟析构函数内联