中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

C++類的繼承虛函數怎樣用

c++
小樊
82
2024-10-31 10:42:56
欄目: 編程語言

在C++中,虛函數(virtual function)允許我們在派生類中重寫基類中的函數。當使用繼承時,如果基類中的某個成員函數被聲明為虛函數,那么派生類中的同名函數將自動成為虛函數。這使得我們可以通過基類指針或引用來調用派生類中的實現,從而實現多態性。

以下是一個簡單的示例,展示了如何使用繼承和虛函數:

#include <iostream>

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

// 派生類 Circle,繼承自 Shape
class Circle : public Shape {
public:
    // 重寫基類中的虛函數 area()
    double area() const override {
        double radius = 5.0; // 假設半徑為 5
        return 3.14159 * radius * radius;
    }
};

// 派生類 Rectangle,繼承自 Shape
class Rectangle : public Shape {
public:
    // 重寫基類中的虛函數 area()
    double area() const override {
        double width = 4.0; // 假設寬度為 4
        double height = 6.0; // 假設高度為 6
        return width * height;
    }
};

int main() {
    // 使用基類指針指向派生類對象
    Shape* shape_ptr = new Circle();
    std::cout << "圓的面積: " << shape_ptr->area() << std::endl;

    shape_ptr = new Rectangle();
    std::cout << "矩形的面積: " << shape_ptr->area() << std::endl;

    // 釋放內存
    delete shape_ptr;

    return 0;
}

在這個示例中,我們定義了一個名為Shape的基類,其中包含一個虛函數area()。然后,我們定義了兩個派生類CircleRectangle,分別表示圓形和矩形。這兩個派生類都重寫了基類中的area()函數,以實現各自的面積計算。

main()函數中,我們使用基類指針shape_ptr分別指向CircleRectangle對象,并通過基類指針調用area()函數。由于area()是虛函數,因此會根據實際對象類型調用相應的派生類實現。最后,我們輸出計算得到的面積。

0
卢湾区| 凤山市| 许昌县| 东山县| 夹江县| 南木林县| 昌邑市| 合阳县| 昌都县| 南充市| 莱阳市| 固安县| 吴桥县| 文登市| 北安市| 华阴市| 双城市| 黔西县| 张家川| 龙井市| 大埔区| 宜城市| 沅陵县| 贺兰县| 天全县| 若尔盖县| 阿拉善左旗| 正安县| 景东| 茶陵县| 沙坪坝区| 秦皇岛市| 赤城县| 霍邱县| 盐城市| 楚雄市| 怀宁县| 南溪县| 德阳市| 长海县| 囊谦县|