我有一个类叫做 human
包含 int age, int height
等信息, QString name
等..
用户单击按钮以添加新的人类信息,程序会在用户输入信息时创建新的人类对象(例如,john、johan...)。
我想存储所有对象然后我希望能够访问每个单独的对象及其成员。什么是最好的存储对象?
我想的是声明static std::vector<human*> humanVector;
在头文件上
然后
humanVector.push_back( new human(name, age, height));
听起来是否正确,或者我需要用不同的方式来做或使用不同的 decleration,比如
static std::vector<std::shared_ptr<human>> humanVector;
最佳答案
如果使用静态 std::vector<human*> humanVector;
, 需要确保在 vector 作用域之前释放 vector 中的对象,否则会导致内存泄漏问题。
使用 std::vector<std::shared_ptr<human>> humanVector;
是异常安全的,它负责破坏对象。 std::shared_ptr 是一个智能指针,通过指针保留对象的共享所有权。当发生以下任一情况时,对象将被销毁并释放其内存:
拥有该对象的最后一个剩余的 shared_ptr 被销毁。
拥有该对象的最后一个剩余的 shared_ptr 通过 operator= 或 reset() 分配另一个指针。
关于c++ - 我应该如何存储对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20043669/