C++での関数のオーバーライド[関数のオーバーロードと例によるオーバーライド]

公開: 2021-05-25

C ++での関数のオーバーライドは、親クラスにすでに存在する子クラスで関数を使用できるようにする機能です。 子クラスはすべてのデータメンバーを継承し、メンバー関数は親クラスに存在します。 子クラスの機能をオーバーライドする場合は、関数のオーバーライドを実装できます。 関数のオーバーライドとは、子クラスに新しいバージョンの親クラス関数を作成することを意味します。

目次

C++関数

C ++関数は、タスクを実行するために集まったステートメントのグループです。 すべてのプログラムには少なくともmain()関数があり、特定のプログラムには追加の関数を含めることができます。

関数宣言は、コンパイラーに関数名、パラメーター、および戻り値の型を伝えます。 関数定義は関数本体を決定します。 C ++標準ライブラリは、プログラムが呼び出すことができる多くの組み込み関数で構成されています。 関数は、メソッド、プロシージャ、またはサブルーチンにすることができます。

関数の定義

C++関数の一般的な構文は次のとおりです。

return_type function_name(parameter list){

機能本体

}

C ++関数はすべて、関数ヘッダーと本体で構成されます。 C++関数のコンポーネントは次のとおりです。

戻り型–戻り型は、関数の戻り値の型を表します。

関数名-これは関数の名前を示します。 関数名とパラメータリストが関数シグネチャを構成します。

パラメーター–パラメーターは、関数によって返される値のプレースホルダーです。 関数が呼び出されると、実際のパラメーターと呼ばれるパラメーターに値が渡されます。

関数本体-関数本体は、関数が何をするかを定義するステートメントのリストを構成します。

関数の呼び出し

C ++で関数を使用するには、関数を呼び出すか呼び出す必要があります。 制御が関数に移され、関数が目的のタスクを実行し、returnステートメントが制御をメインプログラムに戻します。

関数を呼び出すには、関数名などの必要なパラメーターを渡す必要があります。 関数が値を返す場合は、値を保存できます。 関数の呼び出し中に引数を関数に渡す方法はいくつかあります。 呼び出しタイプは、値による呼び出し、参照による呼び出し、およびポインターによる呼び出しです。

C++での関数のオーバーライド

派生クラスまたは子クラスが、基本クラスまたは親クラスですでに定義されている関数を定義する場合、C++では関数オーバーライドと呼ばれます。 関数のオーバーライドは、実行時のポリモーフィズムを実現するのに役立ちます。 これにより、プログラマーは、基本クラスですでに使用されている関数の特定の実装を実行できます。

例:

ソース

上記の例を検討してください。 ここで、親クラスは「Base」であり、子クラスは「Derived」です。

上記のプログラムの出力は次のようになります。

派生関数

関数print()は、BaseクラスとDerivedクラスの両方で宣言されています。 Derivedクラスオブジェクト「derivated1」を介して関数print()を呼び出すと、Derivedクラスのprint()が呼び出され、Baseクラスの同じ関数をオーバーライドして実行されます。

関数オーバーライド原理の働き

ソース

上の画像からわかるように、Derivedクラスのオブジェクトを介して同じ関数を呼び出したため、Baseクラスの関数がオーバーライドされました。

Baseクラスのオブジェクトを介してprint()関数を呼び出す場合、関数はオーバーライドされません。 例:

//基本クラスの関数を呼び出す

ベースbase1;

base1.print(); //出力:基本関数

上記のコードの出力は次のようになります。

基本機能

C++でオーバーライドされた関数にアクセスする方法

オーバーライドされた関数にアクセスするには、スコープ解決演算子「::」を使用する必要があります。 オーバーライドされた関数にアクセスする別の方法は、基本クラスのポインターを使用して派生クラスのオブジェクトをポイントし、ポインターを介して関数を呼び出すことです。

例:

ソース

上記のプログラムの出力は次のようになります。

派生関数

基本機能

オーバーライドされた関数のアクセスの動作

ソース

ここで、派生ステートメント1.print()はDerivedクラスのprint()関数にアクセスし、ステートメントderived2.Base :: print()はBaseクラスのprint()関数にアクセスします。

派生クラスからC++オーバーライド関数を呼び出す

このコードでは、Derivedクラス自体からオーバーライドされた関数を呼び出します。

Derivedクラスからのオーバーライドされた関数呼び出しの動作

ソース

Base :: print()コマンドは、Derivedクラス内からオーバーライドされた関数を呼び出します。

世界のトップ大学からオンラインでソフトウェアエンジニアリングコース学びましょう。 エグゼクティブPGプログラム、高度な証明書プログラム、または修士プログラムを取得して、キャリアを早急に進めましょう。

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

関数のオーバーロードはコンパイル時に実行され、基本クラスと派生クラスで実行できます。 パラメータのデータ型やリターン型などの関数のシグネチャを変更することにより、関数の複数の定義を提供するのに役立ちます。

関数のオーバーライドは実行時に実行されます。 オーバーライドでは、基本クラスは、同じ戻りタイプとパラメーターを使用して派生クラスで再定義されます。 C++での関数のオーバーライドと関数のオーバーロードのその他の違いは次のとおりです。

1.継承

関数のオーバーライドはクラスの継承でのみ使用できますが、関数のオーバーロードはクラスの継承を必要としません。

2.機能シグネチャ

オーバーロードされた関数は、パラメーターの数またはパラメーターのタイプのいずれかでシグニチャーが異なります。 関数のオーバーライドでは、関数のシグネチャは同じままです。

3.機能範囲

オーバーライドされた関数のスコープは異なりますが、オーバーロードされた関数のスコープは同じです。

4.機能の動作

派生クラス関数が基本クラス関数とは異なる方法で、または追加機能を使用して実行する必要がある場合は、関数のオーバーライドが不可欠です。 関数のオーバーロードは、同じ名前の関数が、渡されたパラメーターに応じて異なる動作をする必要がある場合に実装されます。

フルスタックソフトウェア開発の詳細に興味がある場合は、upGrad&IIIT-Bのフルスタックソフトウェア開発のエグゼクティブPGプログラムをチェックしてください。これは、働く専門家向けに設計されており、500時間以上の厳格なトレーニング、9以上のプロジェクトを提供します。および割り当て、IIIT-B卒業生のステータス、実践的な実践的なキャップストーンプロジェクト、およびトップ企業との雇用支援。

関数のオーバーライドとは何ですか?

関数のオーバーライドは、オブジェクト指向プログラミングの概念であり、派生クラス内の関数がその基本クラスの関数をオーバーライドできるようにしますが、署名は異なります(通常は実装も異なります)。 これの重要な側面は、派生クラスが基本クラスへの変更を「元に戻す」ことができないこと、または少なくとも基本クラスをさらに編集しないと不可能であるということです。 関数のオーバーライドの一般的な使用法は、基本クラスでデフォルトの実装を提供してから、派生クラスの特定の実装でオーバーライドすることです。

関数のオーバーライドとオーバーロードの違いは何ですか?

関数のオーバーライドは、基本クラスにすでに存在する関数と同じ名前の関数を作成するときに発生します。 この場合、新しい関数が既存の関数に置き換わり、元の関数の代わりに使用できます。 同じ名前でパラメーターが異なる関数を作成すると、オーバーロードが発生します。 この場合、元の関数に加えて新しい関数が呼び出され、どちらの関数も問題なくどのような状況でも使用できます。

C ++の継承とは何ですか?