我有一个我无法理解的问题:
假设我有一个class System有几个成员字段,其中一个是 type unordered_map,所以当我在头文件中声明类时,我会在 header 的开头写#include <unordered_map>。
现在,我有两种声明这个字段的方法:
1.std::unordered_map<std::string,int> umap;
2.std::unordered_map<std::string,int>* p_umap;
现在在类的构造函数中,如果我选择第一个选项,则无需在初始化列表中初始化该字段,因为构造函数class System将调用该字段的默认构造函数umap作为构造类型实例的一部分class System。
如果我选择第二个选项,我应该p_umap在构造函数(在初始化列表中)使用运算符 new 和在析构函数中初始化字段,以删除此动态分配。
这两个选项有什么区别?如果你有一个类,它的一个字段是 type unordered_map,你如何声明这个字段?作为指针还是作为类型的变量unordered_map?