C++抽象類(lèi)怎樣調(diào)用

c++
小樊
81
2024-11-09 04:39:32

在C++中,抽象類(lèi)是不能直接實(shí)例化的。要調(diào)用抽象類(lèi)中的成員函數(shù),您需要?jiǎng)?chuàng)建一個(gè)從抽象類(lèi)派生的子類(lèi),并在子類(lèi)中實(shí)現(xiàn)抽象類(lèi)中的純虛函數(shù)。然后,您可以創(chuàng)建子類(lèi)的對(duì)象并調(diào)用其成員函數(shù)。以下是一個(gè)簡(jiǎn)單的示例:

#include <iostream>

// 抽象類(lèi) Shape
class Shape {
public:
    // 虛析構(gòu)函數(shù),以便在刪除基類(lèi)指針時(shí)正確調(diào)用派生類(lèi)的析構(gòu)函數(shù)
    virtual ~Shape() {}

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

// 從 Shape 類(lèi)派生的 Circle 類(lèi)
class Circle : public Shape {
public:
    // 構(gòu)造函數(shù),接受半徑作為參數(shù)
    Circle(double radius) : radius_(radius) {}

    // 實(shí)現(xiàn)抽象類(lèi)中的純虛函數(shù) area
    double area() const override {
        return 3.14159 * radius_ * radius_;
    }

private:
    double radius_;
};

int main() {
    // 由于抽象類(lèi)不能直接實(shí)例化,我們需要?jiǎng)?chuàng)建一個(gè)子類(lèi)對(duì)象
    Circle circle(5.0);

    // 調(diào)用子類(lèi)中的成員函數(shù) area
    std::cout << "The area of the circle is: " << circle.area() << std::endl;

    return 0;
}

在這個(gè)例子中,我們定義了一個(gè)抽象類(lèi)Shape,其中包含一個(gè)純虛函數(shù)area()。然后,我們創(chuàng)建了一個(gè)從Shape類(lèi)派生的Circle類(lèi),并實(shí)現(xiàn)了area()函數(shù)。在main()函數(shù)中,我們創(chuàng)建了Circle類(lèi)的對(duì)象,并調(diào)用了其area()成員函數(shù)。

0