我应该如何存储对象

时间:2013-11-18 08:58:36

标签: c++ qt

我有一个名为human的班级,其中包含int age, int heightQString name等信息。

用户点击按钮以添加新的人类信息,并且当用户输入信息(例如,john,johan,...)时,程序创建新的人类对象。

我想存储所有对象,然后我希望能够访问每个单独的对象及其成员。什么是最好的存储对象?

我在想的是在头文件

上声明static std::vector<human*> humanVector;

然后

humanVector.push_back( new human(name, age, height));

听起来是否正确,或者我是否需要采用不同的方式或使用不同的方法  static std::vector<std::shared_ptr<human>> humanVector;

1 个答案:

答案 0 :(得分:0)

如果使用静态std::vector<human*> humanVector;,需要确保在向量范围之前释放向量中的对象,否则会导致内存泄漏问题。

使用std::vector<std::shared_ptr<human>> humanVector;是异常安全的,它负责解析对象。 std :: shared_ptr是一个智能指针,通过指针保留对象的共享所有权。当发生以下任一情况时,对象将被销毁并释放其内存: 拥有该对象的最后剩余的shared_ptr将被销毁。 拥有该对象的最后一个shared_ptr通过operator =或reset()分配另一个指针。