我有一个我无法理解的问题:
假设我有一个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
?