ウィキペディアによると、複数発送とは
... 関数またはメソッドは、複数の引数の実行時 (動的) 型に基づいて動的にディスパッチできます。
ただし、C++ では、派生クラスで関数をオーバーライドできます。
#include <iostream>
using namespace std;
class Base
{
public:
virtual void method(int a) { cout << a; }
virtual void method(int a, int b) { cout << a + b; }
};
class Derived: public Base
{
void method(int a) { cout << a * 10 << endl; }
void method(int a, int b) { cout << (a + b) * 10 <<endl; }
};
int main()
{
Base* derived = new Derived;
derived->method(1);
derived->method(1, 2);
return 0;
}
ここでmethod
は実行時にバインドされており (私は を使用しているためvirtual
)、入力パラメーターに基づいて特定のメソッドが選択されています。
二次的な質問: このポリモーフィズムとメソッドのオーバーロードの組み合わせが C++ に存在する場合、複数のディスパッチをサポートする言語の利点 (あるとすれば) は何ですか?