多重定義
関数の多重定義をサポートしない言語では、たとえ関数の引数の型や数によらずアルゴリズムすなわち本質的な内容がまったく同じでも、引数の型や数ごとに関数をそれぞれ定義する場合は同じ名前が使えず、引数に応じた名前をそれぞれ付ける必要があり、呼び出すときも引数に応じて使い分ける必要がある。
C言語での例を以下に示す。
ベクトルの長さを計算する関数を、型および次元ごとに命名している。
一方、関数の多重定義をサポートする言語では、関数のシグネチャが異なれば同じ名前を使うことができる。関数には本質的な名前だけを付ければよく、呼び出すときも引数によらず一様に記述できる。
C++での例を以下に示す。
なお、C++11規格では、2次元ベクトルの長さを求める標準関数として、多重定義されたstd::hypot()関数が用意されている。C++17では3次元ベクトルバージョンも追加されている。