第2章クラステンプレート:2.11まとめ

2.11まとめ

2.11 まとめ

 

  •クラステンプレートは、1つ以上の型パラメーターを開いたままで実装されるクラスです。

   クラステンプレートは、次のプロパティを持つクラスです。クラスの実装では、1つ以上の型パラメーターを指定できません。

  •クラステンプレートを使用するには、オープンタイプをテンプレート引数として渡します。次に、クラステンプレートがこれらの型に対してインスタンス化(およびコンパイル)されます。

   クラステンプレートを使用するために、テンプレートの実際のパラメーターとして指定されていない型を渡すことができます;コンパイラーは、型に基づいてクラステンプレートをインスタンス化します。

  •クラステンプレートの場合、呼び出されるメンバー関数のみがインスタンス化されます。

   クラステンプレートの場合、呼び出されるメンバー関数のみがインスタンス化されます。

  •クラステンプレートを特定のタイプに特化できます。

  クラステンプレートは、特定のタイプに特化できます。

  •特定のタイプのクラステンプレートを部分的に特化できます。

  特定のタイプのローカル特殊化クラステンプレートを使用できます。

  •C ++ 17以降、クラステンプレート引数はコンストラクターから自動的に推定できます。

  C ++ 17以降では、クラステンプレート引数をコンストラクターから自動的に派生させることができます。

  •集約クラステンプレートを定義できます。

  集約クラステンプレートを定義できます

  •テンプレートタイプの呼び出しパラメータは、値によって呼び出されるように宣言されている場合は減衰します。

  渡すパラメーターを値で宣言すると、テンプレートタイプの仮パラメータータイプが縮退(減衰)します。

  •テンプレートは、グローバル/名前空間スコープまたはクラス宣言内でのみ宣言および定義できます。

  テンプレートは、グローバル/名前空間スコープまたはクラス宣言内でのみ宣言および定義できます。

 

1. C ++ 17は、クラス引数テンプレートの推論を導入しました。これにより、テンプレート引数がコンストラクターから派生できる場合、テンプレート引数をスキップできます。これについては、40ページのセクション2.9で説明します。

1. C ++ 17では、クラステンプレート引数の派生が導入されていますが、それらがコンストラクターから推測できる場合は、テンプレート引数をスキップできます。これについては、40ページのセクション2.9で説明します。

 

2.テンプレート化されたエンティティです。181ページのセクション12.1を参照してください。

2.テンプレート化されたエンティティです。181ページのセクション12.1を参照してください。

 

3.意図的に「型定義」の代わりにtypedefという単語を使用する。キーワードtypedefは、もともと「タイプ定義」を提案することを目的としていました。ただし、C ++では、「型の定義」は実際には何か別のものを意味します(たとえば、クラスまたは列挙型の定義)。代わりに、typedefは、typedefで実行できる既存のタイプの代替名(「エイリアス」)と考えてください。

3.「型定義」の代わりに、typedefという単語を意図的に使用します。キーワードtypedefは元々「型定義」を提案していました。ただし、C ++では、「型の定義」は実際には別のことを意味します(たとえば、クラスまたは列挙型の定義)。代わりに、typedefは、typedefで定義できる既存のタイプの代替名(「エイリアス」)と見なす必要があります。

 

4.エイリアステンプレートは、typedefテンプレートと呼ばれる場合があるため、typedefテンプレートと呼ばれることがあります(誤って)。

4.エイリアステンプレートは、(誤って)typedefテンプレートと呼ばれることがあります。これは、typedefと同じ役割を果たすためです(テンプレートを生成できる場合)。

 

5.メンバーはタイプなので、ここではタイプ名が必要です。詳細については、67ページのセクション5.1を参照してください。

5.クラスメンバーがタイプの場合、typenameを追加する必要があります(詳細については、67ページのセクション5.1を参照してください)。

 

6.さらに悪いことに、1つの整数引数を初期サイズとして取るベクトルコンストラクターがあるため、初期値が5のスタックの場合、:elems(elem)を使用すると、ベクトルの要素の初期サイズは5要素になります。

6.さらに悪いことに、vectorには整数パラメーターを持つコンストラクターがあり、これはベクターのサイズを初期化するために使用されます。したがって、初期値が5のスタックの場合、elems(elem)を使用すると、サイズが5要素のベクトルが得られます。

おすすめ

転載: www.cnblogs.com/5iedu/p/12709820.html