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

溫馨提示×

C++純虛函數如何定義

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

在 C++ 中,純虛函數是在基類中聲明的虛函數,它沒有定義具體的實現,而是用= 0來表示。派生類必須實現這個純虛函數,否則它們也將成為抽象類,無法實例化。

下面是一個簡單的純虛函數的定義示例:

#include <iostream>
using namespace std;

// 基類 Shape
class Shape {
public:
    // 構造函數
    Shape() {
        cout << "Shape 構造函數被調用" << endl;
    }

    // 虛析構函數
    virtual ~Shape() {
        cout << "Shape 析構函數被調用" << endl;
    }

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

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

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

    // 實現純虛函數 area
    double area() const override {
        return 3.14 * radius_ * radius_;
    }

private:
    double radius_;
};

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

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

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

    // 釋放內存
    delete shape;

    return 0;
}

在這個例子中,我們定義了一個抽象基類 Shape,其中包含一個純虛函數 area()。然后我們定義了一個派生類 Circle,繼承自 Shape,并實現了 area() 函數。在 main() 函數中,我們創建了一個指向 Shape 的指針,指向一個 Circle 對象,并調用了 area() 函數。注意,我們不能創建 Shape 類的對象,因為它是一個抽象類。

0
富裕县| 凉山| 甘肃省| 共和县| 阿拉善左旗| 双柏县| 饶阳县| 宁夏| 乳源| 军事| 德庆县| 新安县| 霍林郭勒市| 玛纳斯县| 泗水县| 雷波县| 海城市| 贵州省| 高邑县| 永修县| 文山县| 通渭县| 阜平县| 廊坊市| 通化县| 康平县| 阳城县| 平泉县| 保德县| 石柱| 合作市| 彭山县| 昭平县| 桦南县| 泰州市| 望奎县| 丰宁| 榆林市| 河源市| 邵武市| 安新县|