首頁 >後端開發 >C++ >C++ 函式繼承詳解:如何定義和使用抽象基底類別?

C++ 函式繼承詳解:如何定義和使用抽象基底類別?

WBOY
WBOY原創
2024-05-03 13:21:021070瀏覽

函數繼承允許衍生類別重複使用基底類別的函數定義,透過以下步驟實作:定義抽象基底類別,包含純虛函數。在衍生類別中使用 override 關鍵字繼承並實作基底類別的函數。實戰案例:建立抽象基底類別 Shape,衍生類別 Circle 和 Rectangle 計算不同形狀的面積。

C++ 函数继承详解:如何定义和使用抽象基类?

C 函數繼承詳解:定義和使用抽象基底類別

什麼是函數繼承?

函數繼承是一種 C 特性,它允許衍生類別繼承基底類別的函數定義,從而在子類別中重複使用基底類別的功能。

定義抽象基底類別

一個抽象基底類別是一個不打算被實例化的基底類,它只作為其他類別的基底類別。它包含純虛函數(即沒有函數體的函數),這些函數必須在衍生類別中重寫。要宣告一個抽象基底類,可以使用virtual= 0,例如:

class Shape {
public:
    virtual double area() const = 0;
};

衍生類別中的函數繼承

#衍生類別可以繼承抽象基底類別的函數定義,方法是使用override 關鍵字並提供函數的實作。例如:

class Circle : public Shape {
public:
    override double area() const {
        return M_PI * radius * radius;
    }
private:
    double radius;
};

實戰案例:形狀面積計算

讓我們以計算形狀面積為例進行一個實戰示範。我們建立一個 Shape 抽象基類,並建立 Circle 和 Rectangle 衍生類別來計算圓和矩形的面積:

#include <iostream>
#include <cmath>

using namespace std;

class Shape {
public:
    virtual double area() const = 0;
};

class Circle : public Shape {
public:
    Circle(double radius) : radius(radius) {}
    override double area() const {
        return M_PI * radius * radius;
    }
private:
    double radius;
};

class Rectangle : public Shape {
public:
    Rectangle(double width, double height) : width(width), height(height) {}
    override double area() const {
        return width * height;
    }
private:
    double width;
    double height;
};

int main() {
    Circle circle(5);
    cout << "Circle area: " << circle.area() << endl;

    Rectangle rectangle(3, 4);
    cout << "Rectangle area: " << rectangle.area() << endl;

    return 0;
}

運行輸出:

Circle area: 78.5398
Rectangle area: 12

以上是C++ 函式繼承詳解:如何定義和使用抽象基底類別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn