溫馨提示×

C++純虛函數(shù)怎樣實(shí)現(xiàn)

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

在C++中,純虛函數(shù)是在基類中聲明的虛函數(shù),它沒有定義具體的實(shí)現(xiàn)。派生類必須提供這個(gè)純虛函數(shù)的具體實(shí)現(xiàn),否則它們也將成為抽象類,無法實(shí)例化。

要實(shí)現(xiàn)一個(gè)純虛函數(shù),只需在基類中的函數(shù)聲明后加上 “= 0”。例如:

#include <iostream>

// 基類 Shape
class Shape {
public:
    // 聲明一個(gè)純虛函數(shù) area()
    virtual double area() const = 0;
};

// 派生類 Circle,繼承自 Shape
class Circle : public Shape {
public:
    // 實(shí)現(xiàn)基類中的純虛函數(shù) area()
    double area() const override {
        double radius = 5.0;
        return 3.14159 * radius * radius;
    }
};

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

    // 創(chuàng)建一個(gè)指向 Shape 的指針,指向一個(gè)派生類(如 Circle)的對象
    Shape* shape = new Circle();

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

    delete shape; // 釋放內(nèi)存
    return 0;
}

在這個(gè)例子中,我們定義了一個(gè)名為 Shape 的基類,其中包含一個(gè)純虛函數(shù) area()。然后,我們創(chuàng)建了一個(gè)名為 Circle 的派生類,繼承自 Shape,并實(shí)現(xiàn)了 area() 函數(shù)。在 main() 函數(shù)中,我們使用基類指針指向派生類對象,并調(diào)用 area() 函數(shù)。

0