関数オーバーロードと関数テンプレート - C++ 質問する

関数オーバーロードと関数テンプレート - C++ 質問する

C++の本では、なぜ関数オーバーロード私たちがテンプレートC++ で利用できるものは何でしょうか?

C++ のほとんどの本で関数のオーバーロードが教えられているのとは対照的に、テンプレートの効果的な (そして正しい) 使用方法を示す方が良いのではないでしょうか。

それとも、一方ではなく他方を使用する正当な理由があるのでしょうか?

ベストアンサー1

テンプレートは、異なる可能性のある型に対して同じアクションを実行する場合に便利です。簡単な例:

template <typename T>
T foo(const T& a, const T& b) { return a + b; }

型に応じて異なる操作を適用する場合は、オーバーロードを使用できます。

struct Foo{ void foo() const {} };

void foo(int i) { std::cout << "i = " << i << "\n"; }
void foo(const Foo& f) { f.foo(); }

テンプレートとテンプレートの特殊化を使用して上記を実現できますが、このような特殊化は一般的なケースに対していくつかの例外を表す必要があります。

おすすめ記事