首頁  >  文章  >  後端開發  >  C++ 成員函式的繼承規則

C++ 成員函式的繼承規則

WBOY
WBOY原創
2024-04-18 14:45:011135瀏覽

C 成員函數繼承規則:公有繼承:衍生類別公有繼承基底類別的成員函數,則衍生類別的成員函數也為公有。保護繼承:衍生類別保護繼承基底類別的成員函數,則衍生類別的成員函數為保護的。私有繼承:衍生類別私有繼承基底類別的成員函數,則衍生類別的成員函數為私有的,而衍生類別本身無法直接存取。

C++ 成员函数的继承规则

C 成員函數的繼承規則

在C 物件導向程式設計中,類別可以透過繼承的方式從基底類別繼承資料成員和成員函數。對於成員函數的繼承,遵循下列規則:

  • 公有繼承:衍生類別公有繼承基底類別的成員函數,則衍生類別的成員函數也為公有。
  • 保護繼承:衍生類別保護繼承基底類別的成員函數,則衍生類別的成員函數為保護的。
  • 私有繼承:衍生類別私有繼承基底類別的成員函數,則衍生類別的成員函數為私有的,而衍生類別本身無法直接存取。

實戰案例:

#考慮以下範例:

class Shape {
public:
    virtual double getArea();  // 抽象函数
};

class Rectangle : public Shape {
public:
    Rectangle(double length, double width);
    double getArea() override;  // 重写父类的 getArea 函数
private:
    double length;
    double width;
};

class Square : protected Shape {
public:
    Square(double side);
    double getArea() override;
private:
    double side;
};

class Circle : private Shape {
public:
    Circle(double radius);
    double getArea() override;
private:
    double radius;
};

在這個範例中:

  • Rectangle 類別公有繼承Shape 類,因此getArea 函數在Rectangle 類別中也是公有的。
  • Square 類別保護繼承 Shape 類,因此 getArea 函數在 Square 類別中也是保護的。
  • Circle 類別私有繼承 Shape 類,因此 getArea 函數在 Circle 類別中是私有的。

注意:

  • 抽象函數必須在衍生類別中重寫。
  • 衍生類別的成員函數可以存取基底類別的保護和私有資料成員,但只能呼叫基底類別的公有和保護成員函數。
  • 衍生類別的建構子和析構函式不會從基底類別繼承。

以上是C++ 成員函式的繼承規則的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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