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