C の関数オーバーライドにより、サブクラスが親クラス関数をオーバーライドし、独自の実装を提供できるようになります。サブクラスは、親クラスと同じ名前とパラメーターの型を持つ関数を宣言し、それを override キーワードでマークする必要があります。オーバーライド関数を使用すると、親クラスの機能を拡張したり、サブクラスに特定の実装を提供したり、抽象関数の具体的な実装を提供したりできます。
# C 関数の書き換えの詳細な説明: 親クラスの関数をオーバーライドする秘密
#概要
関数の書き換えは、C オブジェクト指向プログラミングの強力な機能であり、サブクラスが親クラスの関数を再定義できるようになります。オーバーライドを通じて、サブクラスは親クラスの実装をオーバーライドし、独自の特定の機能を提供できます。構文
関数を書き直すには、サブクラスは親クラスと同じ名前とパラメーターの型を持つ関数を宣言する必要があります:class Child : public Parent { public: ReturnType overrideName(ParameterList) override; };
キーワードは、関数が親クラスの関数をオーバーライドすることを示します。
は、オーバーライド関数の名前です。
は、オーバーライドされた関数のパラメーター リストです。
は、オーバーライドされた関数の戻り値の型です (親クラスの関数とは異なる場合があります)。
実際的なケース
面積を計算する関数を含むシェイプ基本クラスShapeを考えてみましょう
getArea() ###。サブクラス Rectangle
と Circle
はそれぞれ Shape
を継承し、独自の面積計算メソッドを提供する必要があります: <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:cpp;toolbar:false;'>class Shape {
public:
virtual double getArea() = 0;
};
class Rectangle : public Shape {
public:
Rectangle(double width, double height) : m_width(width), m_height(height) {}
double getArea() override {
return m_width * m_height;
}
private:
double m_width;
double m_height;
};
class Circle : public Shape {
public:
Circle(double radius) : m_radius(radius) {}
double getArea() override {
return M_PI * m_radius * m_radius;
}
private:
double m_radius;
};
int main() {
Shape* shapes[] = {new Rectangle(5, 10), new Circle(3)};
for (Shape* shape : shapes) {
cout << "Area: " << shape->getArea() << endl;
}
return 0;
}</pre><div class="contentsignin">ログイン後にコピー</div></div>
Area: 50
Area: 28.2743
と Circle
が Shape
の getArea()
関数をオーバーライドし、計算を提供します。それぞれのエリア。親クラスのポインタが子クラスのオブジェクトを指している場合、オーバーライドされた関数が呼び出されます。
関数の書き換えは通常、次のシナリオで使用されます。
親クラスの関数を拡張または変更する必要がある場合。オーバーライドされた関数は、親クラスの関数と同じシグネチャ (名前、パラメーターの型、戻り値の型) を持つ必要があります。
以上がC++関数書き換えの詳細解説:親クラス関数オーバーライドの極意の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。