在 C++ 应用程序中,我使用 operator new 在特定类 Vehicle 的类 User 对象的各个点创建,并在每次实例化后立即将它们放入一个 vector 中,该 vector 是第一类的属性(即 vector< Vehicle* > v1
) .
在程序运行时,我可能需要在某个时候删除 Vehicle 类的对象。我应该绝对使用运算符删除吗?如果是这样,如何对 vector 执行此操作? vector 是否有任何预定义的功能来完成相同的工作?当我删除它们时, Vehicle 类的属性会发生什么变化,在这种情况下是指向其他对象的指针?他们也被删除了吗?
如果直到程序结束才需要删除它们,它们是被析构函数删除还是应该“手动”删除它们?
最佳答案
这是 C++ 的方式:
#include <memory>
#include <vector>
#include "vehicle.hpp"
typedef std::vector<std::unique_ptr<Vehicle>> vehicle_container;
#include "derivedvehicles.hpp"
int main()
{
vehicle_container v;
//...
v.emplace_back(new Car);
v.emplace_back(new Bike);
//...
} // baam, everything is cleaned up
关于c++ - 删除 vector 中携带的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8547079/