首頁  >  文章  >  後端開發  >  C++類別設計中如何實現多態性?

C++類別設計中如何實現多態性?

WBOY
WBOY原創
2024-06-03 19:23:00582瀏覽

多態性允許派生類別具有不同行為,同時共享相同的接口,實現此目的的步驟包括:創建基類、派生類、虛函數和使用基類指針,示例代碼展示瞭如何使用形狀類層次結構(Shape、Rectangle、Circle)實現多態性,計算不同形狀的總面積。

C++類別設計中如何實現多態性?

實作 C++ 中多型性的類別設計

何為多態性?

多態性允許衍生類別與基底類別擁有不同的行為,同時共用相同的介面。它提供了一種優雅的方式來創建具有類似行為但具體實現不同的物件集合。

實作多型性的步驟:

  1. 建立基底類別:定義衍生類別將共享的通用介面。
  2. 衍生類別:從基底類別建立衍生類別,實作特定行為。
  3. 虛擬函數:在基底類別中宣告虛擬函數,在衍生類別中重新定義。這允許在運行時動態綁定函數呼叫。
  4. 基底類別指標:使用基底類別指標或參考來持有衍生類別對象,實現多態性。

實戰案例:

考慮一個形狀類別的層次結構:

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中文網其他相關文章!

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