C ++で関数のオーバーロードとオーバーライドを実装する方法は?



この記事では、OOPSの非常に重要な概念の2つであるC ++での関数のオーバーロードとオーバーライドについて紹介します。

C ++は 自然の中で、それはさまざまな機能を誇っています。このセッションでは、C ++で関数のオーバーロードと関数のオーバーライドを実装する方法について説明します。

この記事では、次のポインタについて説明します。





C ++での関数のオーバーロードとオーバーライドに関するこの記事に進みます

関数のオーバーロード



同じ名前でパラメーターが異なる関数はC ++で許可され、呼び出されます 関数のオーバーロード コンパイル時ポリモーフィズムとも呼ばれます。

例えば:

2進化10進数のJavaコード
sum(int a、float b)sum(int a、int b)sum(int a、int b、int c)

ここでは、同じ名前の3つの関数がありますが、それらを区別する唯一の点は、パラメーターがそれぞれ異なることです。したがって、渡されたパラメータに応じて、関数が呼び出されます。



関数の戻り値の型が異なる場合、それは無効と見なされます。

C ++での関数のオーバーロードとオーバーライドに関するこの記事に進みます

関数のオーバーロードのサンプルコード

名前付けの使用を含めるstdclass Addition {public:int add(int n1、int n2){return n1 + n2} int add(int n1、int n2、int n3){return n1 + n2}} int main(void){Additionカウト< 

出力

出力-C ++での関数のオーバーロードとオーバーライド-Edureka

説明

上記のプログラムでは、加算クラスに2つの関数があります。どちらもaddという名前です。 1つには2つのパラメーターがあり、もう1つには3つのパラメーターがあります。

main関数で、aと呼ばれるクラス追加のオブジェクトを作成します。それぞれ2つと3つのパラメーターを使用してadd関数を呼び出し、関数addを呼び出して、加算を実行します。

これは、関数のオーバーロードが発生する方法です。

C ++での関数のオーバーロードとオーバーライドに関するこの記事に進みます

関数のオーバーライド

派生クラスが基本クラスの関数と同じ名前の関数を持っている場合、それは呼び出されます 関数のオーバーライド。 両方の関数は、両方のクラスで同じパラメーターを持っている必要があります。

関数のオーバーライドのサンプルコード

#include using namespace std class BaseClass {public:void disp(){cout<<'Parent Class Function' } } class DerivedClass: public BaseClass{ public: void disp() { cout<<'Child Class Function' } } int main() { DerivedClass obj = DerivedClass() obj.disp() return 0 } 

出力:

説明:

上記のプログラムでは、派生クラスと基本クラスで同じ名前の基本関数を示しています。ここでは、オブジェクトは派生クラスで作成されているため、displayを呼び出すと、子クラスオブジェクトのみが表示されます。

C ++での関数のオーバーロードとオーバーライドに関するこの記事に進みます

オーバーライドを実行するための順序

コードを考えてみましょう:

#include using namespace std class BaseClass {public:void disp(){cout<<'Function of Parent Class' } } class DerivedClass: public BaseClass{ public: void disp() { cout<<'Function of Child Class' } } int main() { BaseClass obj = DerivedClass() obj.disp() return 0 } 

出力:

説明:

上記のプログラムでは、派生クラスと基本クラスで同じ名前の基本関数を示しています。ここで、前のプログラムとの唯一の違いはそれです。子クラスのオブジェクトを作成します。子クラスオブジェクトには、基本クラスの参照が与えられます。これは、別の方法を使用して行うこともできます。

構文

Parent_class_name :: function()

上記の例では、次のように使用します。

BaseClass :: disp()

これは、オーバーライドする別の方法です。

関数のオーバーロードVS関数のオーバーライド

関数の過負荷 関数のオーバーライド
スコープは同じですスコープが異なります
署名は異なっている必要があります(例:パラメーター)署名は同じでなければなりません
可能なオーバーロード関数の数可能なオーバーライド関数は1つだけです
継承なしで発生する可能性があります主に相続により発生します

これで、「C ++での関数のオーバーロードとオーバーライド」に関するこの記事は終わりです。詳細を知りたい場合は、 信頼できるオンライン学習会社であるEdurekaによる。 EdurekaのJavaJ2EEおよびSOAトレーニングおよび認定コースは、Hibernate&SpringなどのさまざまなJavaフレームワークに加えて、コアJavaコンセプトと高度なJavaコンセプトの両方についてトレーニングするように設計されています。

質問がありますか?このブログのコメントセクションでそれについて言及してください。できるだけ早くご連絡いたします。