C++ 関数の書き換え: 継承における動作カバレッジの秘密を明らかにする

WBOY
リリース: 2024-04-30 15:12:02
オリジナル
817 人が閲覧しました

関数の書き換えは、派生クラスが同じ名前の関数を定義し、それを別の方法で実装する場合に発生します。ルールには次のものが含まれます。 override キーワードを使用します。名前、パラメータ、戻り値の型は基本クラス関数と同じです。アクセス権は、基本クラス関数のアクセス権よりも低くてはなりません。オーバーライドを通じて、派生クラスは基本クラスの動作をオーバーライドし、ポリモーフィズムを達成し、異なる派生クラスの同じ名前のメソッドを動的に呼び出すことができます。

C++ 函数重写:揭开继承中的行为覆盖秘籍

C 関数の書き換え: 継承における動作カバレッジの秘密を明らかにする

C では、関数の書き換えは、継承の主要な機能を通じてポリモーフィックな動作を実現する方法です。関数のオーバーライドは、派生クラスが基本クラスと同じ名前で実装が異なる関数を定義する場合に発生します。

構文と規則

基本クラス関数をオーバーライドするには、派生クラスで override キーワードを使用する必要があります。例:

class Base {
public:
    virtual void print() {
        cout << "Base class print()" << endl;
    }
};

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

関数書き換えのルールは次のとおりです:

  • 派生クラス関数は、同じ名前、パラメーター リスト、戻り値の型を持つ必要があります。
  • 派生クラス関数では、override キーワードを使用する必要があります。
  • 派生クラス関数のアクセス権は、基本クラス関数のアクセス権より低くてはなりません。

実践的なケース

図形抽象クラスとその 2 つの派生クラス、長方形と円を考えてみましょう。

class Shape {
public:
    virtual double getArea() = 0;
};

class Rectangle : public Shape {
public:
    double width, height;

    Rectangle(double w, double h) : width(w), height(h) {}

    override double getArea() {
        return width * height;
    }
};

class Circle : public Shape {
public:
    double radius;

    Circle(double r) : radius(r) {}

    override double getArea() {
        return M_PI * radius * radius;
    }
};

int main() {
    Rectangle rect(5, 3);
    Circle circle(4);

    Shape* shapes[] = {&rect, &circle};

    for (auto shape : shapes) {
        cout << "Shape area: " << shape->getArea() << endl;
    }
}
ログイン後にコピー

この例では、Shape クラスは、クラス Rectangle および Circle # から派生した抽象メソッド getArea() を定義します。 ## 実際の面積計算を提供するために書き直されました。ポリモーフィズムにより、shapes 配列内の基本クラス ポインターを使用して getArea() メソッドを呼び出すことで、さまざまな形状の面積を動的に計算して出力できます。

以上がC++ 関数の書き換え: 継承における動作カバレッジの秘密を明らかにするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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