26章 テンプレート関数

http://www.geocities.jp/ky_webid/cpp/language/026.html

さてC++の難問テンプレートのところまでやってきました。

テンプレートとは、型が違うだけでまったく同じ処理をしたい関数を作りたい場合、いちいち型の数だけオーバーロードするのはあまりにもめんどくさい上に別のクラス型が増えるたびに新しく関数を用意するのは馬鹿げているので、それら型の違いだけを吸収する役割を持ちます。

言葉だけではあれなので実装を見た方がわかりやすいでしょう。

#include <iostream>

template <class T> T max(const T& a,const T& b) {
    return a > b ? a : b;
}

int main() {
    
    std::cout << max(100,200) << std::endl;
    
    return 0;
}
$ main
200

maxの引数にint型を渡しているので、テンプレートの定義Tはintとして解釈され、動作します。

めちゃくちゃ便利ですね。

ちなみに初めusing namespace stdと書いていたのですが、どうやらstd::maxというのが存在していたらしく、コンパイルエラーが出てしまいました。

ということで今回はusingしていません。あしからず。