亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

C++多態性怎樣實現動態分派

c++
小樊
81
2024-11-09 02:24:30
欄目: 編程語言

C++中的多態性可以通過虛函數(virtual function)和動態分派(dynamic dispatch)來實現。動態分派是一種在運行時根據對象的實際類型來調用相應函數的方法。這是通過虛函數表(vtable)和虛函數指針(vptr)實現的。

以下是一個簡單的示例,展示了如何使用虛函數和動態分派實現多態性:

#include <iostream>

// 基類 Shape
class Shape {
public:
    // 虛函數 area()
    virtual double area() const {
        return 0.0;
    }
};

// 派生類 Circle,繼承自 Shape
class Circle : public Shape {
public:
    Circle(double radius) : radius_(radius) {}

    // 重寫基類的虛函數 area()
    double area() const override {
        return 3.14159 * radius_ * radius_;
    }

private:
    double radius_;
};

// 派生類 Rectangle,繼承自 Shape
class Rectangle : public Shape {
public:
    Rectangle(double width, double height) : width_(width), height_(height) {}

    // 重寫基類的虛函數 area()
    double area() const override {
        return width_ * height_;
    }

private:
    double width_;
    double height_;
};

int main() {
    // 使用基類指針指向派生類對象
    Shape* shape1 = new Circle(5.0);
    Shape* shape2 = new Rectangle(4.0, 6.0);

    // 調用動態分派的虛函數 area()
    std::cout << "Circle area: " << shape1->area() << std::endl;
    std::cout << "Rectangle area: " << shape2->area() << std::endl;

    // 釋放內存
    delete shape1;
    delete shape2;

    return 0;
}

在這個示例中,我們定義了一個基類 Shape 和兩個派生類 CircleRectangle。基類中有一個虛函數 area(),派生類分別重寫了這個函數。在 main() 函數中,我們使用基類指針指向派生類對象,并通過動態分派調用相應的 area() 函數。這就是C++多態性的實現方式。

0
湖北省| 奉节县| 金寨县| 昌都县| 韩城市| 汶上县| 松阳县| 五峰| 丽水市| 延寿县| 铜川市| 乌兰察布市| 兴海县| 平谷区| 五大连池市| 拉孜县| 南部县| 隆尧县| 上栗县| 济南市| 商洛市| 丽水市| 会宁县| 鸡西市| 客服| 香河县| 六盘水市| 青铜峡市| 大竹县| 鄱阳县| 鄂托克旗| 三穗县| 莱阳市| 芷江| 文登市| 荃湾区| 湘潭县| 临汾市| 嘉祥县| 嘉黎县| 怀柔区|