C++ での関数のオーバーロード
実際のコード記述では、同じ関数が異なるオブジェクト型を処理する場合があるため、関数を再実装する必要があり、これによりコードがより複雑になります。この問題を解決するために、C++ は関数のオーバーロードをサポートしています。 。
たとえば、算術合計の問題の場合、受信データを受信してそれを合計するように関数をカスタマイズする必要がありますが、独立したモジュールとして、呼び出し元がどのタイプのデータを渡したかをどのように知ることができるでしょうか。整数データであってもよいし、もちろん浮動小数点型データであってもよいし、整数と浮動小数点型(どちらが整数型でどちらが浮動小数点型であるかはまだ不明)であってもよいし、包括的なアプローチは、さまざまな種類の仮パラメータ関数を使用することです。つまり、2 つの int 型、2 つの double 型、最初の int と 2 番目の double を定義する必要があります。 e、および最初の double と 2 番目の int は、それを実装するための 4 つの関数を定義します。たとえば、名前は、Add_double_double()、Add_int_double()、Add_int_int()、Add_double_int() などです。 ?
そこで、C++ での関数オーバーロードの登場により、この問題は非常にうまく解決されます。関数オーバーロードとは、関数名は同じですがパラメーターの型や数が異なる 2 つ以上の関数であり、パラメーターの種類と数に基づいて、最適な関数が自動的に選択されます。バインディング呼び出しの場合、選択は自動的に実装されます。
たとえば、先ほどの追加の例では次のようになります。
#include<iostream>usingnamespacestd;intadd(inta,intb){cout<<(int,int)t;returna+b;}doubleadd(doublea,doubleb){cout<<(doble,double)t;returna+ b ;}doubleadd(doublea,intb){cout<<(double,int )t;returna+b;}doubleadd(inta,doubleb){cout<<(int,double)t;returna+b;}intmain(){cout<<add(2) ,3)<<endl;cout<<add(2.9,15.3)<<endl;cout<<add(10,9.9)<<endl;cout<<add(11.5,5)<<endl;return0;}
実行結果は次のとおりです。
どの関数が実行されるかを確認するために、どの関数が呼び出されるかを区別するために関数内に cout 出力ステートメントを追加します。
コードを理解するには、誰もが自分で実験する必要があります。