91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

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
墨脱县| 沙坪坝区| 石门县| 建湖县| 灵寿县| 深圳市| 梅河口市| 遂昌县| 拉萨市| 定日县| 新津县| 连城县| 东至县| 长沙市| 屏东市| 宕昌县| 永登县| 隆昌县| 锦屏县| 惠水县| 双鸭山市| 炎陵县| 措勤县| 尖扎县| 安丘市| 黄梅县| 临汾市| 莱州市| 济源市| 长寿区| 亳州市| 东光县| 荣昌县| 辰溪县| 乌拉特后旗| 房产| 巫溪县| 宜阳县| 平安县| 繁昌县| 赤水市|