ビデオ: C++11, 14新機能:変数テンプレート|lynda.com 日本版 2024
標準のC ++ライブラリは、ほんの数例を挙げると、数学、時間、入出力、およびDOS操作の完全なセットを提供します。初心者として学ぶ初期のプログラムの多くは、インクルードファイル文字列 で定義された文字列関数を使用しています。
これらの関数の多くの引数型は固定されています。たとえば、strcpy(char *、char *)の両方の引数は、NULLで終了する文字列へのポインタでなければなりません。それ以外の意味はありません。
<! - 1 - >複数のタイプに適用できる関数があります。最大2つの引数を返すlowly()関数の例を考えてみましょう。次のバリエーションはすべて意味があります。
int maximum(int n1、int n2); // 2つの整数の最大値を返します。unsigned maximum(符号なしのu1、符号なしのu2);二重最大値(double d1、double d2); char max(char c1、char c2);
ここでは、4つすべての場合にmaximum()を実装したいとします。
<!もちろん、あなたは可能なすべてのバージョンでmaximum()をオーバーロードすることができます:double double(double d1、double d2){return(d1> d2)? d1:d2;} int maximum(int n1、int n2){return(n1> n2)? n1:n2;} char max(char c1、char c2){return(c1> c2)? c1:c2;} // …他のすべての数値型の場合は繰り返し…
このアプローチは機能します。現在、C ++は、最大(1,2)
などの参照に対して、最高の一致、maximum(int、int) 、 を選択します。 しかし、変数の種類ごとに同じ関数を作成するのは時間の無駄です。 <!すべての最大(T、T)関数のソースコードは同じパターンに従います。ここでTは数値型の1つです。一度関数を書くことができれば、関数が使用されるときにC ++が必要に応じてT型を提供するようにすれば便利です。実際、C ++ではこれを正確に行うことができます。それらは
テンプレート定義と呼ばれます。