多態性與函數重載交互作用:基底類別中建立重載函數,在衍生類別中重新定義這些函數版本。父類別指標或引用可以指向子類別對象,根據對象實際類型呼叫不同的方法。在範例程式碼中,Shape 基底類別宣告 area() 純虛函數,衍生類別 Rectangle 和 Circle 重新定義 area() 方法計算各自的面積。
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()
純虛函數。衍生類別 Rectangle
和 Circle
重新定義 area()
方法,以不同的方式計算其面積。
main()
函數建立一個 Shape
指標數組,並將衍生類別物件儲存在其中。循環遍歷數組並呼叫 area()
方法,根據指向物件的實際類型呼叫適當的方法。
以上是C++ 中多態性如何與函數重載相互作用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!