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