首頁  >  文章  >  後端開發  >  C++ 中繼承如何用來建構類別層次結構?

C++ 中繼承如何用來建構類別層次結構?

WBOY
WBOY原創
2024-06-04 15:11:09886瀏覽

C++ 繼承用於建構類別層次結構,新類別(衍生類別)從基底類別繼承功能並擴展其功能。衍生類別使用存取說明符宣告繼承關係,控制對基底類別成員的存取權限。 public 授予衍生類別和外部程式碼存取權限,protected 授予衍生類別及其衍生類別的存取權限,private 只授予衍生類別存取權限。透過建立衍生類別並覆寫基底類別的純虛函數,衍生類別可以實現自訂功能,如範例中 Rectangle 和 Circle 計算特定形狀面積的實作。

C++ 中继承如何用于构建类层次结构?

C++ 中的繼承:建構類別層次結構

前言

繼承是物件導向程式設計中的一項基本概念,它允許從現有的類別建立新的類別。在 C++ 中,繼承可以用於建構類別層次結構,其中每個類別繼承自其基底類別並可能擴展其功能。

語法

為了從基底類別繼承,新的類別(衍生類別)必須使用publicprotectedprivate 存取說明符宣告繼承關係。語法如下:

class 派生类 : 访问说明符 基类 {
    // 派生类成员
};
  • 存取說明符控制衍生類別對基底類別成員的存取權:

    • ##public:允許衍生類別和外部程式碼存取基底類別成員。
    • protected:允許衍生類別及其衍生類別存取基底類別成員。
    • private:只允許衍生類別存取基底類別成員。
實戰案例

考慮一個描述幾何形狀的類別層次結構:

class Shape {
public:
    virtual double getArea() const = 0; // 纯虚函数
};

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

class Circle : public Shape {
public:
    Circle(double radius) : _radius(radius) {}
    double getArea() const override { return 3.14159 * _radius * _radius; }
private:
    double _radius;
};

範例

在此範例中,

Shape 是形狀類別的基類,它包含一個純虛函數getArea(),這意味著必須在所有衍生類別中實作它。

  • Rectangle 是一個從 Shape 繼承的矩形類,它覆蓋了 getArea() 函數以計算矩形的面積。
  • Circle 是另一個從 Shape 繼承的圓類,它也覆寫了 getArea() 函數以計算圓的面積。
要使用這個類別層次結構,我們可以建立

RectangleCircle 物件並呼叫getArea() 函數:

int main() {
    Rectangle rectangle(2.0, 3.0);
    cout << "Rectangle area: " << rectangle.getArea() << endl;
    Circle circle(5.0);
    cout << "Circle area: " << circle.getArea() << endl;
    return 0;
}

輸出:

Rectangle area: 6
Circle area: 78.5398163397

以上是C++ 中繼承如何用來建構類別層次結構?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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