多態性允許派生類別具有不同行為,同時共享相同的接口,實現此目的的步驟包括:創建基類、派生類、虛函數和使用基類指針,示例代碼展示瞭如何使用形狀類層次結構(Shape、Rectangle、Circle)實現多態性,計算不同形狀的總面積。
實作 C++ 中多型性的類別設計
何為多態性?
多態性允許衍生類別與基底類別擁有不同的行為,同時共用相同的介面。它提供了一種優雅的方式來創建具有類似行為但具體實現不同的物件集合。
實作多型性的步驟:
實戰案例:
考慮一個形狀類別的層次結構:
class Shape { public: virtual double area() = 0; // 纯虚函数(必须在派生类中重新定义) }; class Rectangle : public Shape { public: Rectangle(double width, double height) : width_(width), height_(height) {} double area() override { return width_ * height_; } private: double width_; double height_; }; class Circle : public Shape { public: Circle(double radius) : radius_(radius) {} double area() override { return 3.14 * radius_ * radius_; } private: double radius_; };
用法:
// 创建不同形状的集合 vector<Shape*> shapes; shapes.push_back(new Rectangle(2.0, 3.0)); shapes.push_back(new Circle(4.0)); // 使用基类指针计算总面积 double totalArea = 0.0; for (Shape* shape : shapes) { totalArea += shape->area(); // 使用多态性动态绑定函数调用 } // 输出总面积 cout << "Total area: " << totalArea << endl;
輸出:
Total area: 37.68
以上是C++類別設計中如何實現多態性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!