関数のオーバーロード
CoddyのC++ジャーニー「基礎」セクションの一部 — レッスン 54/74。
関数オーバーロードは、2つ以上の関数が同じ名前を持ちながら異なるパラメータを持つことができるC++の機能です。オーバーロードされた関数を呼び出す際、C++コンパイラは、呼び出しで使用した引数の型と定義で指定されたパラメータの型を比較することにより、使用する最も適切な定義を決定します。一致する関数が見つからない場合、コンパイラはエラーを生成します。
関数オーバーロードの例を次に示します:
int add(int a, int b) {
return a + b;
}
double add(double a, double b) {
return a + b;
}
int main() {
int sum1 = add(5, 3); // addの最初のバージョンを呼び出します
double sum2 = add(2.5, 3.7); // addの2番目のバージョンを呼び出します
return 0;
}この例では、addという名前の2つの関数があります。一方は2つのint型のパラメータを受け取り、もう一方は2つのdouble型のパラメータを受け取ります。addに渡す引数の型に応じて、適切なバージョンの関数が呼び出されます。
戻り値の型だけでは関数のオーバーロードには不十分であることに注意してください。関数はパラメータリストが異なっている必要があります。
チートシート
関数オーバーロードにより、同じ名前で異なるパラメータを持つ複数の関数を定義できます。コンパイラは、引数の型に基づいて適切な関数を選択します。
int add(int a, int b) {
return a + b;
}
double add(double a, double b) {
return a + b;
}
int main() {
int sum1 = add(5, 3); // int版を呼び出す
double sum2 = add(2.5, 3.7); // double版を呼び出す
return 0;
}関数はパラメータリストが異なっている必要があります。戻り値の型だけではオーバーロードには不十分です。
自分で試してみよう
このレッスンにはコードチャレンジは含まれていません。
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。