C++のオーバーロードについて
C++のオーバーロードについて、プログラム未経験のC++の学習者が本質を理解できるように、わかりやすいたとえを用いて解説をしていきます。
C++のオーバーロードとは
オーバーロードとは、同じ名前を持つ関数を複数定義し、それらの関数が引数の型や数によって区別される機能のことを指します。これは、現実世界でよくある状況に似ています。
例えば、想像してみてください、あなたが料理人で、「切る」という動作を行っています。あなたが食材を扱っているとき、"切る"という動作はさまざまな方法で行われます。例えば、魚を切る方法は、野菜を切る方法とは異なります。それぞれの食材によって、使用する道具、切り方、切る強さなど、詳細な実行方法は異なるかもしれません。
それでも、あなたはどちらのタスクも「切る」行為と呼んでいます。それらは同じ名前を持ちながら、異なるパラメータ(この場合は食材)によって実行方法が異なる行為です。
これがまさにC++のオーバーロードの概念です。同じ関数名を使用しながら、パラメータの型や数が異なる複数の関数を定義することが可能です。関数が呼び出されるとき、引数に応じて適切な関数が選択され、実行されます。
C++のオーバーロードのサンプルプログラム
関数オーバーロードを示す簡単なC++のコードを示します。ここでは、add()という名前の関数を二つ定義していますが、それぞれの引数が異なります。
cppのサンプルプログラム 例
#include<iostream>
using namespace std;// First add function, takes two ints and returns their sum
int add(int a, int b){
return a + b;
}// Second add function, takes three ints and returns their sum
int add(int a, int b, int c){
return a + b + c;
}int main(){
cout<<"Sum of 10 and 20 is: "<<add(10, 20)<<endl;
cout<<"Sum of 10, 20 and 30 is: "<<add(10, 20, 30)<<endl;
return 0;
}
このプログラムを実行すると、出力は以下のようになります:
c++ サンプルプログラムの出力結果
Sum of 10 and 20 is: 30
Sum of 10, 20 and 30 is: 60
同じ関数名add()を使用していますが、引数の数が異なるので、適切な関数が呼び出されています。これが関数のオーバーロードの一例です。