ホームページ  >  記事  >  バックエンド開発  >  C++ 関数の書き換え: 柔軟な継承の新しい章の幕開け

C++ 関数の書き換え: 柔軟な継承の新しい章の幕開け

WBOY
WBOYオリジナル
2024-05-03 14:03:01328ブラウズ

C 関数の書き換えにより、サブクラスが親クラスの関数をオーバーライドできるようになり、ポリモーフィズムが達成され、継承の柔軟性がもたらされます。関数を書き換える場合、サブクラス関数のシグネチャは、override キーワードで識別される親クラス関数とまったく同じである必要があります。利点には、柔軟性、ポリモーフィズム、コードの再利用が含まれます。ただし、署名一致ルールと最終修飾子はオーバーライドできないことに注意してください。

C++ 函数重写:开启灵活继承的全新篇章

#C 関数の書き換え: 柔軟な継承の新しい章の幕開け

#序文

関数オーバーライドは、サブクラスが親クラスの関数をオーバーライドできるようにする強力な C 機能であり、それによってポリモーフィズムを実現します。これにより、柔軟な継承の新たな可能性が開かれ、親クラスの基礎となる機能を保持しながら、サブクラスがその動作をカスタマイズできるようになります。

構文

関数をオーバーライドするには、サブクラスは親クラスの関数と同じシグネチャを持つ新しい関数を宣言する必要があります。新しい関数の戻り値の型、パラメーター、および名前は、親クラスの関数とまったく同じである必要があります。関数をオーバーライドするための構文は次のとおりです。

returntype ClassName::functionName(parameters) {
  // 子类的函数体
}

ここで、

returntype は関数の戻り値の型、 ClassName はサブクラスの名前、 functionName は書き換える関数の名前、parameters は関数のパラメーターのリストです。

実践的なケース

次のような親クラスを考えてみましょう:

class Shape {
public:
  virtual double area() { return 0.0; }
};

サブクラス

Rectangle を作成したいと考えています。同じ 親クラスの同じ area() 関数ですが、独自の実装を提供します:

class Rectangle : public Shape {
public:
  double length;
  double width;

  Rectangle(double l, double w) : length(l), width(w) {}

  double area() override {
    return length * width;
  }
};

サブクラス

Rectangle で、area() をオーバーライドします。 関数を追加し、四角形の寸法を保存するための length および width メンバー変数を追加しました。 override キーワードを使用すると、関数が親クラスの関数をオーバーライドしていることを明示的に示すことができます。

利点

関数のオーバーライドには次の利点があります。

  • 柔軟性: サブクラスのカスタマイズが可能親クラスの基本機能を保持します。
  • ポリモーフィズム: 基本クラス ポインターを介したさまざまなタイプのオブジェクトの参照と、適切にオーバーライドされた関数の呼び出しをサポートします。
  • コードの再利用: コードの重複を避けるために、親クラスの共通関数をサブクラスで共有できます。

    関数の書き換えは「シグネチャ マッチング」ルールに従います。つまり、サブクラス関数の戻り値の型、パラメーター、および名前は次のとおりです。親クラスの関数と同じです。クラスの関数は同じです。
  • サブクラス関数が親クラス関数をオーバーライドしない場合、コンパイラは警告を発行します。
  • 親クラスの関数が
  • final として宣言されている場合、サブクラスでオーバーライドすることはできません。

以上がC++ 関数の書き換え: 柔軟な継承の新しい章の幕開けの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。