C++ での関数オーバーライドの説明
公開: 2022-11-09関数とは
関数は、プログラム内で規定されたタスクを実行するためのコードに属する部分です。 継承の実装をオーバーライドする関数を学ぶために、継承に関する直接の知識を持つことが重要です。 C++ 関数は、タスクを実行するためにまとめられたステートメントのコレクションです。 すべてのプログラムには main() 関数があり、特定のプログラムには関数が追加されています。 関数宣言は、関数定義によって関数本体を決定するために、関数名、戻り値の型、およびパラメーターをコンパイラーに送信します。 関数は、プロシージャ、メソッド、またはサブルーチンのいずれかであり、すべての C++ 関数はヘッダーと本体で構成されます。
C++ 関数の構文:-
return_type function_name(パラメータリスト) {
関数本体
}
コンポーネント:-
- 戻り値の型 -関数の戻り値の型を示します。
- 関数名 - これは、関数シグネチャとパラメータ リストを構成する関数の名前を表します。
- パラメーター -これは、関数が返す値のプレースホルダーです。 関数が呼び出されると、パラメーターに渡される値は、実パラメーターと呼ばれます。
- 関数本体 - 関数本体は、関数のタスクを定義するステートメントのリストで構成されます。
関数を呼び出す方法
関数は、使用前に呼び出すか呼び出す必要があります。その後、必要なタスクを実行するために制御が関数に転送されます。 この後、return ステートメントによって制御がメイン プログラムに戻されます。 関数を呼び出すには、パラメーターと関数名を渡す必要があります。 引数は、呼び出し中に複数の方法で関数に渡すことができます。 通話の種類は次のとおりです。
- 値による呼び出し
- 参照による呼び出し
- ポインターによる呼び出し
世界トップクラスの大学が提供するソフトウェア開発コースをオンラインで学びましょう。 エグゼクティブ PG プログラム、上級認定プログラム、または修士プログラムを取得して、キャリアを加速させましょう。
C++ での関数のオーバーライド
C++ オーバーライドは、同じ名前の関数を定義するためのアイデアです。 オーバーライドの基本クラス関数は、基本クラス関数をオーバーライドする派生クラス内で再定義されます。 ランタイム ポリモーフィズムの実装は、関数のオーバーライドとして定義することもできます。 ここでは、プログラムのランタイムが関数をオーバーライドします。
関数のオーバーライドにより、プログラマは親クラスにある子クラスの関数を使用できます。 その結果、子クラスは、親クラスにあるすべてのデータ メンバーとメンバー関数を継承します。 子クラスの機能をオーバーライドするには、関数のオーバーライドを実装する必要があります。 関数のオーバーライドとは、子クラス内で親クラス関数の新しいバージョンを作成することを指します。
C++ で関数オーバーライドを実装するための構文
ベース クラスと派生クラスの両方で定義された同じ関数が、派生クラスのオブジェクトを使用して呼び出されると、派生クラスの関数が実行されます。 これは C++ での関数のオーバーライドです。
以下は、C++ での関数オーバーライドの実装で最もよく使用される構文です。
// 関数のオーバーライドを示す C++ プログラム
#include <iostream>
名前空間 std を使用します。
クラスベース{
公衆:
ボイド印刷(){
cout << 「ベース関数」 << endl;
}
};
クラス派生:パブリックベース{
公衆:
ボイド印刷(){
cout << 「派生関数」 << endl;
}
};
int main() {
派生派生1;
派生1.print();
0 を返します。
}
出力
派生関数
これにより、派生クラス内で基本クラス関数が再定義されます。 したがって、関数のオーバーライドを実現するには、return-type、function_parameters、および function_name が同じである必要があります。
ソフトウェア エンジニアリングに関する人気のコースと記事
人気番組 | |||
ソフトウェア開発のエグゼクティブ PG プログラム - IIIT B | ブロックチェーン証明書プログラム - PURDUE | サイバーセキュリティ証明書プログラム - PURDUE | コンピューター サイエンスの MSC - IIIT B |
その他の人気記事 | |||
米国のクラウド エンジニアの給与 2021-22 | 米国でのAWSソリューションアーキテクトの給与 | 米国のバックエンド開発者の給与 | 米国のフロントエンド開発者の給与 |
アメリカのウェブ開発者の給与 | 2022年のスクラムマスターインタビューの質問. | 2022年にサイバーセキュリティのキャリアを始めるには? | 工学部学生のための米国でのキャリアオプション |
C++ での関数のオーバーライドのしくみ
OOP では、派生クラスが親クラスの機能を継承できるようにする必要があります。 関数のオーバーライドにより、プログラマは特定の派生クラスのクラス内の機能をオーバーライドできます。 これは、子クラスがその機能バリアントを必要とする場合に特に便利です。
以下は、理解を深めるための C++ での関数オーバーライドの簡単な例です。
#include <iostream>
名前空間 std を使用します。
クラスparent_class
{
公衆:
仮想ボイド print()
{
cout << 「\nこれは print() メソッドです」
”のBaseClass”;
}
};
クラスの派生クラス: 公開の親クラス
{
公衆:
// 関数のオーバーライド – の新しい定義
// 基本クラスの print メソッド
ボイドプリント()
{
cout << 「\nこれは print() メソッドです」
”派生クラス”;
}
};
// ドライバーコード
int main()
{
派生クラス obj;
obj.print();
}
C++ でオーバーライドされた関数にアクセスする
スコープ解決演算子は、C++ で基本クラスのオーバーライドされた関数にアクセスするために使用されます。 オーバーライドされた関数には、基本クラス ポインターを使用して派生クラスのオブジェクトをポイントし、ポインターから関数を呼び出すことによってもアクセスできます。
// オーバーライドされた関数にアクセスする C++ プログラム
// main() でスコープ解決演算子を使用 ::
#include <iostream>
名前空間 std を使用します。
クラスベース{
公衆:
ボイド印刷(){
cout << 「ベース関数」 << endl;
}
};
クラス派生:パブリックベース{
公衆:
ボイド印刷(){
cout << 「派生関数」 << endl;
}
};
int main() {
派生派生1、派生2;
派生1.print();
// Base クラスの print() 関数にアクセスします
派生2.Base::print();
0 を返します。
}
出力
派生関数
ベース関数
構文内のステートメント。 派生2.Base::print(); Base クラスの print() 関数へのアクセスを提供します。
派生クラスからオーバーライドされた関数を呼び出す
継承を使用して、関数の動作を変更できます。 ただし、基本/親クラスの機能を変更または置換する必要がない場合もあります。 代わりに、より多くの機能を追加する必要があります。
以下は、派生クラスからオーバーライドされた呼び出し関数を使用する例です。
// オーバーライドされた関数を呼び出す C++ プログラム
// 派生クラスのメンバー関数から
#include <iostream>
名前空間 std を使用します。
クラスベース{
公衆:
ボイド印刷(){
cout << 「ベース関数」 << endl;
}
};
クラス派生:パブリックベース{
公衆:
ボイド印刷(){
cout << 「派生関数」 << endl;
// オーバーライドされた関数を呼び出す
ベース::print();
}
};
int main() {
派生派生1;
派生1.print();
0 を返します。
}
出力
派生関数
ベース関数
このプログラムでは、オーバーライドされた関数が Derived クラス内で呼び出されています。
クラス派生:パブリックベース{
公衆:
ボイド印刷(){
cout << 「派生関数」 << endl;
ベース::print();
}
};
コード Base::print(); は、Derived クラス内でオーバーライドされた関数を呼び出します。
関数のオーバーロードと関数のオーバーライド
コンパイル時に関数のオーバーロードを実現できます。これは通常、派生クラスと基本クラス内で行われます。 データ型やパラメーターの戻り値の型など、各関数のシグネチャを変更することにより、複数の関数定義を提供します。
一方、関数のオーバーライドは実行時に行うことができます。 オーバーライドの基本クラスは、同じパラメーターと同じ戻り値の型を持つ派生クラスで再定義されます。 これら 2 つの機能の違いを生む他の機能を見てみましょう。
オーバーライド | 過負荷 | |
継承 | クラス継承が必要 | クラスの継承を必要としない |
関数シグネチャ | パラメータの型または数のいずれかで署名が異なります。 | 関数シグネチャは同じままです |
機能範囲 | 関数の範囲が異なります | 同じスコープを所有 |
関数の動作 | 派生クラス関数の実行が基本クラス関数とは異なる場合、または機能が追加されている場合に必要です。 | 同じ名前を持つ関数が、指定されたパラメーターに基づいて異なる動作をする場合に必要です。 |
結論
C++ での関数のオーバーライドは、メモリ領域を節約し、コードの可読性と一貫性を維持するのに役立ちます。 また、コードを簡単に再利用できるようにするのにも役立ちます。 言うまでもなく、関数のオーバーライドに関する知識は、プログラミングで自分の将来を見据えている場合に備えておくべき重要なスキルです。
信頼できるプレミアム コースに参加して、この分野でキャリアをスタートさせたい場合は、 upGrad でコンピューター サイエンスの upGrad の科学修士号にサインアップできます。 このプログラムの主なハイライトは次のとおりです。
- MERN スタック、マイクロサービス、JavaScript などを学びます。
- Cloud Labs での健全な学習
- Netflix、LinkedIn、Facebook などで使用されているツールを試してください。
- 10 以上のプログラミング ツールと言語のスキルを習得する
- 年中無休の学生サポート
関数のオーバーライドはどのように行われますか?
関数 C++ オーバーライドは、継承を介して発生します。つまり、あるクラスが別のクラスを継承する場合です。 派生クラスと基底クラスが同じ戻り値の型、名前、および引数リストを持つメンバー関数を持つ場合、関数のオーバーライドと呼ばれます。
C++での関数のオーバーロードと関数のオーバーライドの違いは何ですか?
関数のオーバーライドは、関数が基本クラスと派生クラスで同じプロトタイプを所有している場合に発生します。 関数のオーバーロードは、同じ名前の関数が 1 つのクラスに複数存在する場合に実行されます。
C++ での関数のオーバーロードの機能は何ですか?
C++ での関数のオーバーロードは、主にコードの読みやすさを向上させるために使用されます。 プログラマーはこれを使用するため、多数の関数名を覚える必要がありません。 複数の関数、異なるパラメーター、および同じ名前を持つクラスは、オーバーロードと呼ばれます。