C++には「関数のオーバーロード(Overload)」という便利な機能があります。これは、同じ関数名であっても、引数の型や個数が異なれば、別の処理を定義できる機能です。
初心者の方でも理解しやすいように、この記事では関数のオーバーロードの基本と、整数型・浮動小数点型の最大値を求める関数の例を用いてご紹介いたします。
目次
サンプルコード(C++)
#include <iostream>
using namespace std;
// getMax関数の宣言(整数型用)
int getMax(int value1, int value2);
// getMax関数の宣言(小数型用)
double getMax(double value1, double value2);
int main()
{
int numA, numB;
double numX, numY;
cout << "整数を2つ入力してください。" << endl;
cin >> numA >> numB;
cout << "小数を2つ入力してください。" << endl;
cin >> numX >> numY;
int resultInt = getMax(numA, numB);
double resultDouble = getMax(numX, numY);
cout << "入力された整数の最大値は " << resultInt << " です。" << endl;
cout << "入力された小数の最大値は " << resultDouble << " です。" << endl;
return 0;
}
// getMax関数(整数用)の定義
int getMax(int value1, int value2)
{
if (value1 > value2)
return value1;
else
return value2;
}
// getMax関数(小数用)の定義
double getMax(double value1, double value2)
{
if (value1 > value2)
return value1;
else
return value2;
}
解説
1. オーバーロードとは
同じ関数名を使用しながらも、引数の型や個数が異なる関数を複数定義することを「オーバーロード」と呼びます。上記の例では、getMax
という同一の名前を持つ関数が、int
型とdouble
型でそれぞれ定義されています。
2. 使い分けの仕組み
C++のコンパイラは、関数を呼び出すときに引数の型を自動で判別し、適切な定義を選んでくれます。これにより、getMax(10, 20)
は整数用、getMax(1.5, 3.7)
は小数用として処理されます。
実行結果の例
整数を2つ入力してください。
15 30
小数を2つ入力してください。
12.5 8.3
入力された整数の最大値は 30 です。
入力された小数の最大値は 12.5 です。
まとめ
関数のオーバーロードは、処理を統一的な関数名で表現できるため、コードの見通しを良くし、再利用性も高められます。C++では日常的に使われる基本機能ですので、初心者の方もぜひこの機会に習得しておきましょう。