ホームページ  >  記事  >  バックエンド開発  >  C++ 関数のオーバーロードとオーバーライド

C++ 関数のオーバーロードとオーバーライド

王林
王林オリジナル
2024-04-12 12:12:02933ブラウズ

オーバーロードと上書きは、C では異なる概念です。オーバーロードを使用すると、異なるパラメーター リストを使用して同じ名前の関数を作成できます。一方、オーバーライドを使用すると、派生クラス関数が同じ名前の基本クラス関数をオーバーライドできます。オーバーロードでは、関数名は同じですがパラメーター リストが異なります。オーバーライドでは、関数名とパラメーター リストが同じである必要があり、派生クラス関数は override キーワードを使用する必要があります。

C++ 函数的重载和覆盖

C 関数のオーバーロードと上書き

オーバーロードと上書き

オーバーロードと上書きオーバーライドは、C における 2 つの異なる概念です。オーバーロードを使用すると、同じ名前でパラメーター リストが異なる関数を作成できます。一方、オーバーライドを使用すると、派生クラスの関数が基本クラスの同じ名前の関数をオーバーライドできます。

オーバーロード

さまざまな入力パラメータに基づいてさまざまな形状の面積を計算する area という名前の関数があるとします。

int area(int length, int width);  // 矩形面积
double area(double radius);  // 圆形面积

これらの関数は異なるパラメーター リストを持っているため、area 名でオーバーロードされます。さまざまな種類のデータを処理し、さまざまな計算を実行できます。

オーバーライド

次に、area 仮想関数を持つ基本クラス Shape があると仮定します。

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

派生クラス Rectangle および Circle を作成し、area 関数をオーバーライドできます。

class Rectangle : public Shape {
public:
    double area() const override { return length * width; }
    int length, width;  // 矩形属性
};

class Circle : public Shape {
public:
    double area() const override { return Math.PI * radius * radius; }
    double radius;  // 圆形属性
};

派生クラスでは、次のようにします。 override キーワードを使用して、親クラスの area 関数を明示的にオーバーライドします。オーバーライドされる関数は、親関数と同じ戻り値の型と名前を持つ必要があります。

実践的なケース

オーバーロードと上書きを示すプログラムを作成します:

#include <iostream>
#include <cmath>

using namespace std;

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

class Rectangle : public Shape {
public:
    double area() const override { return length * width; }
    int length, width;
};

class Circle : public Shape {
public:
    double area() const override { return Math.PI * radius * radius; }
    double radius;
};

int main() {
    // 创建矩形对象
    Rectangle rectangle;
    rectangle.length = 5;
    rectangle.width = 3;

    // 创建圆形对象
    Circle circle;
    circle.radius = 2;

    // 计算并输出矩形和圆形的面积
    cout << "矩形面积:" << rectangle.area() << endl;
    cout << "圆形面积:" << circle.area() << endl;
}

出力結果:

矩形面积:15
圆形面积:12.566370614359172

この例は次のことを示していますオーバーロードとオーバーライドを通じて、さまざまな機能を持つ関数を作成する方法。

以上がC++ 関数のオーバーロードとオーバーライドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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