理解できない問題があります。
class System
いくつかのメンバーフィールドを持つがあり、そのうちの1つがタイプであるとしましょうunordered_map
。したがって、ヘッダーファイルでクラスを宣言するときは、ヘッダーの先頭に書き込みます#include <unordered_map>
。
現在、このフィールドを宣言する方法は2つあります。
1.std::unordered_map<std::string,int> umap;
2.std::unordered_map<std::string,int>* p_umap;
クラスのコンストラクターで、最初のオプションを選択した場合、のコンストラクターはタイプのインスタンスの構築の一部としてclass System
フィールドのデフォルトコンストラクターを呼び出すため、初期化子リストでそのフィールドを初期化する必要はありません。umap
class System
2番目のオプションを選択した場合、p_umap
この動的割り当てを削除するには、コンストラクター(初期化リスト内)のフィールドを演算子newおよびデストラクタで初期化する必要があります。
これら2つのオプションの違いは何ですか?フィールドの1つがタイプであるクラスがある場合、unordered_map
このフィールドをどのように宣言しますか?ポインタとして、または型の変数としてunordered_map
?