首頁 > 後端開發 > C++ > 存取說明符如何影響 C 繼承中的成員可存取性?

存取說明符如何影響 C 繼承中的成員可存取性?

Barbara Streisand
發布: 2024-12-26 03:27:08
原創
443 人瀏覽過

How Do Access Specifiers Affect Member Accessibility in C   Inheritance?

理解繼承中的存取說明符

在物件導向程式設計中,存取說明符是控制類別成員的可存取性的關鍵字。從基底類別繼承時,衍生類別中其成員的可存取性取決於繼承時使用的存取說明符。

繼承類型

C 支援三種類型繼承:

  • 公共繼承: 的公共成員基類成為派生類別的公共成員。受保護的成員在衍生類別中成為受保護的成員。
  • 受保護的繼承:基底類別的公共成員成為衍生類別的受保護成員。受保護的成員在衍生類別中成為受保護的。
  • 私有繼承:基底類別的公用和受保護成員成為衍生類別的私有成員。

成員存取規則

以下是繼承過程中成員的存取等級如何根據使用的存取說明符:

公共和受保護的繼承:

  • 基類的公共成員在衍生類別中保持公共或受保護。
  • 基底類別的受保護成員在衍生類別中仍受保護class.

私有繼承:

  • 基底類別的公有和受保護成員將失去其存取說明符並在衍生類別中變為私有

範例:

class Base {
public:
    int public_member;
protected:
    int protected_member;
    int private_member; // private members are not inherited
};

class Derived1 : public Base {
public:
    void access_member() {
        // Access rules:
        public_member = 10; // allowed
        protected_member = 20; // allowed
        // private_member = 30; // not accessible
    }
};

class Derived2 : protected Base {
public:
    void access_member() {
        // Access rules:
        public_member = 10; // allowed
        protected_member = 20; // allowed
        // private_member = 30; // not accessible
    }
};

class Derived3 : private Base {
public:
    void access_member() {
        // Access rules:
        public_member = 10; // not accessible
        protected_member = 20; // not accessible
        // private_member = 30; // not accessible
    }
};
登入後複製

繼承的最佳實踐

為下列物件選擇存取說明符時繼承,請考慮以下事項準則:

  • 除非另有需要,否則預設為私有:私有保護類別的內部實作。
  • 使用 protected 向派生類別公開功能.
  • 謹慎使用公共,因為它允許存取來自類別層次結構外部的成員。
  • 避免私有或受保護成員的公共繼承:這會破壞封裝並可能導致意外的行為。

以上是存取說明符如何影響 C 繼承中的成員可存取性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板