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

溫馨提示×

C++純虛函數如何繼承

c++
小樊
81
2024-11-09 03:49:32
欄目: 編程語言

在C++中,純虛函數是在基類中聲明的虛函數,它沒有定義具體的實現。派生類可以通過覆蓋(override)純虛函數來提供具體的實現。當一個類包含至少一個純虛函數時,它被稱為抽象類,不能直接實例化。

以下是一個關于如何在C++中實現純虛函數繼承的示例:

#include <iostream>

// 基類 Shape,包含一個純虛函數 area()
class Shape {
public:
    // 構造函數
    Shape() {
        std::cout << "Shape 構造函數被調用" << std::endl;
    }

    // 虛析構函數,確保派生類的析構函數被正確調用
    virtual ~Shape() {
        std::cout << "Shape 析構函數被調用" << std::endl;
    }

    // 純虛函數 area(),計算形狀的面積
    virtual double area() const = 0;
};

// 派生類 Circle,繼承自 Shape
class Circle : public Shape {
public:
    // 構造函數
    Circle(double radius) : radius_(radius) {
        std::cout << "Circle 構造函數被調用" << std::endl;
    }

    // 析構函數
    ~Circle() {
        std::cout << "Circle 析構函數被調用" << std::endl;
    }

    // 覆蓋基類的純虛函數 area(),計算圓的面積
    double area() const override {
        return 3.14159 * radius_ * radius_;
    }

private:
    double radius_;
};

int main() {
    // 由于 Shape 是抽象類,不能實例化對象
    // Shape shape; // 錯誤

    // 創建一個指向派生類 Circle 的指針,指向一個 Shape 類型的對象
    Shape* shape = new Circle(5.0);

    // 調用 area() 函數
    std::cout << "圓的面積: " << shape->area() << std::endl;

    // 釋放內存
    delete shape;

    return 0;
}

在這個示例中,我們定義了一個抽象基類 Shape,其中包含一個純虛函數 area()。然后,我們創建了一個派生類 Circle,繼承自 Shape,并覆蓋了 area() 函數以計算圓的面積。在 main() 函數中,我們使用一個指向 Shape 類型的指針指向一個 Circle 對象,并調用 area() 函數。

0
太仓市| 武鸣县| 本溪市| 镇原县| 古蔺县| 鄂托克前旗| 蓬安县| 鹿泉市| 开封市| 平顶山市| 临漳县| 夏邑县| 九寨沟县| 霍州市| 淮安市| 崇左市| 巫山县| 扶风县| 射洪县| 剑阁县| 德格县| 筠连县| 濮阳县| 余江县| 阿拉善右旗| 荆门市| 建昌县| 两当县| 平邑县| 南投县| 合山市| 苗栗县| 竹溪县| 南涧| 宜春市| 香河县| 宁乡县| 城步| 南京市| 梁平县| 杂多县|