ある関数に対して 名前が同じで引数の型や個数が異なる別の関数を定義すること。多重定義とも呼ぶ。例えば 二つの整数のうちの大きいほうを返す関数max(inta intb)があるときに 三つの整数の中から最大のものを返す関数max(inta intb intc)を別に定義することを指す。同じ役割を持つ関数に同じ名前を付けることで ソースコードの可読性を高めることができる。C++では演算子(+や-などの演算を表す記号)のオーバーロードも可能。ただ 適切に利用すればソースコードを簡潔に記述できる半面 演算子本来の意味を損なう定義をしてしまうと思わぬ副作用が発生したり ソースコードが読みにくくなったりすることもある。