C++の関数テンプレートは、異なる型に対応した関数をひとつの定義で記述できる仕組みです。たとえば「最大値を求める処理」が、整数でも小数でも使えるように、汎用的に定義することができます。
本記事では、関数テンプレートの基本構文とその使い方について、初心者の方にもわかりやすく解説いたします。
目次
サンプルコード(C++)
#include <iostream>
using namespace std;
// maxValue テンプレート関数の定義
template <class T>
T maxValue(T val1, T val2)
{
if (val1 > val2)
return val1;
else
return val2;
}
int main()
{
int intA, intB;
double doubleA, doubleB;
cout << "2つの整数を入力してください。" << endl;
cin >> intA >> intB;
cout << "2つの小数を入力してください。" << endl;
cin >> doubleA >> doubleB;
int maxInt = maxValue(intA, intB);
double maxDouble = maxValue(doubleA, doubleB);
cout << "整数の最大値は " << maxInt << " です。" << endl;
cout << "小数の最大値は " << maxDouble << " です。" << endl;
return 0;
}
コード解説
1. template <class T>
とは
この構文によって、関数内で使用する型を「T」として汎用的に扱えるようになります。関数を呼び出す際、コンパイラが自動でTに適切な型を推論してくれます。
template <class T>
T maxValue(T val1, T val2)
上記のように記述することで、int
型でもdouble
型でもstring
型でも、比較可能であれば最大値を返す関数として使えます。
2. 呼び出し方法と型の推論
int maxInt = maxValue(intA, intB); // T は int と推論
double maxDouble = maxValue(doubleA, doubleB); // T は double と推論
このように型を明示せずとも、引数の型から自動的に判断して処理してくれるため、柔軟性の高い関数が実現できます。
実行結果の例
る2つの整数を入力してください。
7 14
2つの小数を入力してください。
8.2 6.4
整数の最大値は 14 です。
小数の最大値は 8.2 です。
まとめ
関数テンプレートを使うことで、型に依存しない再利用性の高い関数を簡潔に記述することができます。特に、同じような処理を異なる型に対して行いたい場合に非常に有効です。
C++の基本構文を理解した後は、テンプレートを使った汎用的な関数設計にぜひチャレンジしてみてください。