首頁 >後端開發 >C++ >C++ 中多態性如何與函數重載相互作用?

C++ 中多態性如何與函數重載相互作用?

WBOY
WBOY原創
2024-06-05 18:03:05622瀏覽

多態性與函數重載交互作用:基底類別中建立重載函數,在衍生類別中重新定義這些函數版本。父類別指標或引用可以指向子類別對象,根據對象實際類型呼叫不同的方法。在範例程式碼中,Shape 基底類別宣告 area() 純虛函數,衍生類別 Rectangle 和 Circle 重新定義 area() 方法計算各自的面積。

C++ 中多态性如何与函数重载相互作用?

C++ 中多態性與函數重載的交互作用

在C++ 中,函數重載允許使用相同函數名稱建立函數的不同版本,這些版本具有不同的參數清單。

多態性允許子類別物件以其父類別的類型進行處理。這允許父類別指向子類別物件的指標或引用,從而可以根據物件的實際類型呼叫不同的方法。

當多型性和函數重載一起使用時,可以在基底類別中建立重載函數,並在衍生類別中重新定義這些函數版本。

範例程式碼:

class Shape {
public:
    virtual double area() = 0;  // 纯虚函数
};

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

private:
    double _length, _width;
};

class Circle : public Shape {
public:
    Circle(double radius) : _radius(radius) {}
    double area() override { return 3.14 * _radius * _radius; }

private:
    double _radius;
};

int main() {
    Shape* shapes[] = {
        new Rectangle(4.5, 3.2),
        new Circle(2.5)
    };

    for (Shape* shape : shapes) {
        cout << shape->area() << endl;  // 调用正确的 area() 方法
    }

    return 0;
}

輸出:

14.4
19.625

此範例中,Shape 基底類宣告了一個area() 純虛函數。衍生類別 RectangleCircle 重新定義 area() 方法,以不同的方式計算其面積。

main() 函數建立一個 Shape 指標數組,並將衍生類別物件儲存在其中。循環遍歷數組並呼叫 area() 方法,根據指向物件的實際類型呼叫適當的方法。

以上是C++ 中多態性如何與函數重載相互作用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn