溫馨提示×

C++純虛函數(shù)怎么調(diào)用

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

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

要在 C++ 中調(diào)用一個純虛函數(shù),您需要執(zhí)行以下步驟:

  1. 確保您有一個指向基類的指針或引用,該指針或引用可以指向派生類對象。這是因為純虛函數(shù)是在基類中聲明的,但它們在派生類中實(shí)現(xiàn)。

  2. 使用基類指針或引用調(diào)用純虛函數(shù)。由于純虛函數(shù)在基類中沒有定義,所以實(shí)際調(diào)用將在運(yùn)行時解析到派生類中的實(shí)現(xiàn)。

下面是一個簡單的示例:

#include <iostream>

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

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

private:
    double radius;
};

int main() {
    // 創(chuàng)建一個指向 Shape 的指針,指向一個 Circle 對象
    Shape* shape_ptr = new Circle{5.0};

    // 使用基類指針調(diào)用純虛函數(shù) area()
    std::cout << "The area of the shape is: " << shape_ptr->area() << std::endl;

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

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

0