テンプレート関数のオーバーライド

提供: RAD Studio
移動先: 案内検索

関数テンプレートの概要:インデックス への移動

前述した例は関数テンプレートまたは汎用関数と呼ばれます。関数テンプレートから構築した特定のインスタンスはテンプレート関数と呼ばれます。テンプレート関数は,関数のアドレスを受け取ったとき,または定義済みの(汎用でない)データ型で関数を呼び出したときに生成されます。特定の型に対して非テンプレート関数を定義することにより,テンプレート関数の生成を無効にすることができます。



 #include <string.h>
 char *max(char *x, char *y){
    return(strcmp(x,y) > 0) ? x : y;
 }



max 関数を文字列引数で呼び出すと,自動生成のテンプレート関数ではなくこの関数が実行されます。ここでは,この関数を呼び出すことにより,無意味なポインタの比較を避けることができます。

コンパイラが生成するテンプレート関数では,意味のない引数の変換が行われるだけです。

テンプレート関数の引数型ではテンプレート仮引数をすべて使う必要があります。関数を呼び出したとき,未使用のテンプレート引数の実際の値は引き出せないためです。