クラスの応用_クラステンプレート
全く同じ構造だが、扱うメンバ変数の型が異なるためだけにクラスを何個も作るのは無駄だし、もったいないので使いまわそうというお話。
使いまわしたいクラスの直前に
template
をつけて、クラス内の使いまわしたいメンバ変数の宣言部や、メンバ変数を引数で受け取ったり戻り値で返したりする箇所の型を「T」に置換するだけ。
あとは、実際オブジェクトを生成するときに、Tの箇所に入れたい型を、
クラス名<型名> オブジェクト名;
クラス名に渡してあげるといい。
【プログラム】
#include <iostream> using namespace std; template <class T> class TEST { private: T num; public: void setNum(T n){ num = n; } T getNum(){ return num; } }; int main(){ TEST<int> i; i.setNum(123); cout << i.getNum() << endl; TEST<double> d; d.setNum(34.6); cout << d.getNum() << endl; return 0; }
【実行結果】
123
34.6