[CPP Moudle 07] Templates

4569 ワード

1.関数テンプレート(function template)


テンプレート(template):テンプレートとは、パラメータタイプに基づいて関数またはクラスを生成するメカニズムです.テンプレートはパラメータで表されるため、パラメトリックタイプとも呼ばれます.関数テンプレートを使用して、異なるタイプで実行される関数を一度に定義します.
template <typename T>
void Swap(T& a, T& b)
{
    T temp;
    temp = a;
    a = b;
    b = temp;
}
template <typename T>
T& min(T& a, T& b)
{
	if (a < b)
		return a;
	else
		return b;
}

2.クラステンプレート


関数テンプレートは、機能のみを定義し、タイプを定義しない関数の一般化です.クラステンプレート(class template)もクラスの一般化である.クラステンプレートを定義すると、タイプに応じてクラスを作成できます.
クラステンプレートは、テンプレート引数を宣言する必要があります.インスタンスを作成するプロセスには、ジェネレータを呼び出す前にオブジェクトにメモリが割り当てられているため、理由があります.したがって、テンプレート引数が明示的に作成されていない場合は、オブジェクトを作成できません.
template<typename T>
class Test 
{
 private:
  	T value_;
  
 public:
  	Test(T value) : value_(value) {};
}

int main(void) 
{
  Test<int> t_int(42); // 템플릿 인수 명시
  Test<std::stding> t_string("hello"); // 템플릿 인수 명시
}
テンプレート-クラステンプレート(class template)