C++ 仮想関数の完全ガイド: 概念から実装まで

WBOY
リリース: 2024-04-28 15:27:02
オリジナル
512 人が閲覧しました

仮想関数は OOP の重要なメカニズムであり、派生クラスが基本クラスの関数をオーバーライドして動的バインディングを実現し、スケーラビリティ、ポリモーフィズム、コードの再利用という利点をもたらします。 概念: 仮想関数は基本クラスで宣言され、仮想としてマークされます。 ; 派生クラスは仮想関数をオーバーライドして独自の実装を提供できます。動的バインディング: C は動的バインディングを使用して、どの仮想関数実装を呼び出すかを実行時に決定します。利点: 仮想関数により拡張性、ポリモーフィズム、コードの再利用が強化され、派生クラスを簡単に作成し、さまざまなクラス インスタンスで特定の動作を実行できるようになります。

C++ 虚拟函数完全指南:从概念到实现

#C 仮想関数の完全ガイド: 概念から実装まで

はじめに

仮想関数は、派生クラスが基本クラスの関数を継承およびオーバーライドできるようにする基本的なオブジェクト指向 (OOP) メカニズムです。これにより、クラス インスタンスごとに異なる動作を示す、柔軟で拡張可能なコードを作成できます。

コンセプト

仮想関数は、基本クラスで宣言し、

virtual キーワードを使用してマークされます。

class Base {
public:
    virtual void print() { cout << "Base::print()" << endl; }
};
ログイン後にコピー

Derivedクラスは仮想関数をオーバーライドして独自の実装を提供できます。

class Derived : public Base {
public:
    virtual void print() override { cout << "Derived::print()" << endl; }
};
ログイン後にコピー

動的バインディング

C 動的バインディング メカニズムを使用して、実行時に呼び出される関数を決定します。 仮想関数の実装。仮想関数を呼び出すと、コンパイラは実行時に正しい関数実装を解決する間接呼び出しを挿入します。

利点

仮想関数を使用することにはいくつかの利点があります:

  • スケーラビリティ: 新しい関数を簡単に作成できる基本クラスのコードを変更せずに、既存の基本クラスから派生クラスを作成します。
  • ポリモーフィズム: 仮想関数を使用すると、異なるオブジェクト タイプが同じ関数呼び出しに対して異なる応答を行うことができます。
  • コードの再利用: 仮想関数を定義し、派生クラスにクラス固有の実装を提供させることで、コードの重複を減らすことができます。

実際的なケース

抽象シェイプ クラス Shape を作成し、print() 仮想関数を定義します。

class Shape {
public:
    virtual void print() = 0;
};
ログイン後にコピー

四角形クラスを作成する Rectangle 、Shape から継承し、print() をオーバーライドします:

class Rectangle : public Shape {
public:
    void print() override { cout << "Rectangle" << endl; }
};
ログイン後にコピー

循環クラス Circle を作成し、Shape から継承し、print() をオーバーライドします:

class Circle : public Shape {
public:
    void print() override { cout << "Circle" << endl; }
};
ログイン後にコピー

main() 関数で、 Shape オブジェクトの配列を作成し、その print() メソッドを使用します:

int main() {
    Shape* shapes[] = { new Rectangle(), new Circle() };

    for (Shape* shape : shapes) {
        shape->print();
    }

    return 0;
}
ログイン後にコピー

これは出力します:

Rectangle
Circle
ログイン後にコピー

以上がC++ 仮想関数の完全ガイド: 概念から実装までの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート