関数の多重定義 (C++ のみ)
同じスコープ内で名前 f
を持つ複数の関数を宣言することによって、
関数名 f
を多重定義することになります。
f
の宣言は、型または引数リスト中の引数の数、またはその両方で、
相互に異なっていなければなりません。
f
という名前の多重定義された関数を呼び出すとき、関数呼び出しの引数リストを、
名前 f
を持つ多重定義された候補関数のそれぞれのパラメーター・リストと比較することによって、
正しい関数が選択されます。
候補関数 とは、
多重定義関数名の呼び出しのコンテキストに基づいて呼び出すことのできる関数のことです。
関数
print
(int
を表示する) について考えてみましょう。
次の例に示すように、関数 print
を多重定義して、
他の型 (例えば、double
および char*
) を表示することができます。
異なるデータ型に対して、それぞれ同様のオペレーションを実行する、
同じ名前の関数を 3 つ持つことができます。
#include <iostream>
using namespace std;
void print(int i) {
cout << " Here is int " << i << endl;
}
void print(double f) {
cout << " Here is float " << f << endl;
}
void print(char* c) {
cout << " Here is char* " << c << endl;
}
int main() {
print(10);
print(10.10);
print("ten");
}
上記の例の出力は、以下のとおりです。
Here is int 10
Here is float 10.1
Here is char* ten