溫馨提示×

C++類的繼承訪問權限如何

c++
小樊
107
2024-10-31 10:39:58
欄目: 編程語言

在C++中,類的繼承訪問權限主要有三種:public(公有)、protected(保護)和private(私有)。這些訪問權限決定了基類成員在派生類中的可見性。

  1. Public(公有)繼承: 當一個類公開繼承另一個類時,基類的公有成員和保護成員在派生類中都保持公有,而基類的私有成員在派生類中不可訪問。這意味著派生類的用戶可以訪問基類的公有和保護成員,但不能訪問私有成員。

    示例:

    class Base {
    public:
        int publicMember;
    protected:
        int protectedMember;
    private:
        int privateMember;
    };
    
    class Derived : public Base {
    public:
        void accessMembers() {
            publicMember = 10; // 可以訪問
            protectedMember = 20; // 可以訪問
            // privateMember = 30; // 錯誤!無法訪問基類的私有成員
        }
    };
    
  2. Protected(保護)繼承: 當一個類保護繼承另一個類時,基類的公有成員和保護成員在派生類中都變為保護成員,而基類的私有成員仍然不可訪問。這意味著派生類的用戶不能訪問基類的公有成員,但可以訪問保護成員。派生類的成員函數可以訪問基類的公有和保護成員。

    示例:

    class Base {
    public:
        int publicMember;
    protected:
        int protectedMember;
    private:
        int privateMember;
    };
    
    class Derived : protected Base {
    public:
        void accessMembers() {
            // publicMember = 10; // 錯誤!無法訪問基類的公有成員
            protectedMember = 20; // 可以訪問
            // privateMember = 30; // 錯誤!無法訪問基類的私有成員
        }
    };
    
  3. Private(私有)繼承: 當一個類私有繼承另一個類時,基類的公有成員和保護成員在派生類中都變為私有成員,而基類的私有成員仍然不可訪問。這意味著派生類的用戶不能訪問基類的任何成員(公有、保護或私有)。派生類的成員函數可以訪問基類的公有和保護成員,但不能訪問私有成員。

    示例:

    class Base {
    public:
        int publicMember;
    protected:
        int protectedMember;
    private:
        int privateMember;
    };
    
    class Derived : private Base {
    public:
        void accessMembers() {
            // publicMember = 10; // 錯誤!無法訪問基類的公有成員
            // protectedMember = 20; // 錯誤!無法訪問基類的保護成員
            // privateMember = 30; // 錯誤!無法訪問基類的私有成員
        }
    };
    

總之,C++類的繼承訪問權限允許您控制基類成員在派生類中的可見性。公有繼承使得基類成員在派生類中保持公有,保護繼承使得基類成員在派生類中變為保護成員,而私有繼承使得基類成員在派生類中變為私有成員。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女