溫馨提示×

C++純虛函數如何定義

c++
小樊
105
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
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女