C++ 関数のオーバーロード
C++ 関数のオーバーロード
このチュートリアルでは、例を使用して C++ での関数のオーバーロードについて学習します。
C++ では、渡される引数の数や型が異なる場合、2 つの関数が同じ名前を持つことができます。
同じ名前で引数が異なるこれらの関数は、オーバーロードされた関数と呼ばれます。例:
// same name different arguments
int test() { }
int test(int a) { }
float test(double a) { }
int test(int a, double b) { }
ここでは、4 つの関数すべてがオーバーロードされた関数です。
これら 4 つの関数の戻り値の型はすべて同じではないことに注意してください。オーバーロードされた関数は、異なる戻り値の型を持つ場合と持たない場合がありますが、異なる引数を持つ必要があります。たとえば、
// Error code
int test(int a) { }
double test(int b){ }
ここでは、両方の関数が同じ名前、同じ型、同じ数の引数を持っています。したがって、コンパイラはエラーをスローします。
例 1:さまざまなタイプのパラメーターを使用したオーバーロード
// Program to compute absolute value
// Works for both int and float
#include <iostream>
using namespace std;
// function with float type parameter
float absolute(float var){
if (var < 0.0)
var = -var;
return var;
}
// function with int type parameter
int absolute(int var) {
if (var < 0)
var = -var;
return var;
}
int main() {
// call function with int type parameter
cout << "Absolute value of -5 = " << absolute(-5) << endl;
// call function with float type parameter
cout << "Absolute value of 5.5 = " << absolute(5.5f) << endl;
return 0;
}
出力
Absolute value of -5 = 5 Absolute value of 5.5 = 5.5<図>
このプログラムでは、absolute()
をオーバーロードします。 関数。関数呼び出し中に渡されたパラメーターの型に基づいて、対応する関数が呼び出されます。
例 2:異なる数のパラメーターを使用したオーバーロード
#include <iostream>
using namespace std;
// function with 2 parameters
void display(int var1, double var2) {
cout << "Integer number: " << var1;
cout << " and double number: " << var2 << endl;
}
// function with double type single parameter
void display(double var) {
cout << "Double number: " << var << endl;
}
// function with int type single parameter
void display(int var) {
cout << "Integer number: " << var << endl;
}
int main() {
int a = 5;
double b = 5.5;
// call function with int type parameter
display(a);
// call function with double type parameter
display(b);
// call function with 2 parameters
display(a, b);
return 0;
}
出力
Integer number: 5 Float number: 5.5 Integer number: 5 and double number: 5.5
ここでは、display()
関数は異なる引数で 3 回呼び出されます。渡された引数の数とタイプに応じて、対応する display()
関数が呼び出されます。
これらすべての関数の戻り値の型は同じですが、関数のオーバーロードの場合はそうである必要はありません。
注: C++ では、多くの標準ライブラリ関数がオーバーロードされています。たとえば、sqrt()
関数は double
を取ることができます 、 float
、 int,
などをパラメータとして。 sqrt()
関数は C++ でオーバーロードされています。
C言語