汎用クラスで特定の型のときのみ処理を変えた実装をすることができる。
次のプログラムではintときに違う処理を行う例。
#include <iostream> using namespace std; template <class T> class Test { T mValue; public: Test(T n) { mValue = n; } T get() { return mValue; } }; template <> class Test<int> { int mValue; public: Test(int n) { cout << "Int" << endl; mValue = n; } int get() { return mValue; } }; void main() { Test<float> objfloat(1.0f); cout << objfloat.get() << endl; Test<int> objint(123); cout << objint.get() << endl; }
これで一通りテンプレートについて学んだ。だいぶテンプレートについての理解が深まったと思う。でもまだテンプレートの書式に慣れていない。とくにカッコの位置に戸惑ってしまうことが多い。まあ、これは慣れの問題だろう。
あとはテンプレートをどのようにうまく使っていくかが大切。