溫馨提示×

C++類的繼承訪問權(quán)限如何

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

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

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

    示例:

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

    示例:

    class Base {
    public:
        int publicMember;
    protected:
        int protectedMember;
    private:
        int privateMember;
    };
    
    class Derived : protected Base {
    public:
        void accessMembers() {
            // publicMember = 10; // 錯(cuò)誤!無法訪問基類的公有成員
            protectedMember = 20; // 可以訪問
            // privateMember = 30; // 錯(cuò)誤!無法訪問基類的私有成員
        }
    };
    
  3. Private(私有)繼承: 當(dāng)一個(gè)類私有繼承另一個(gè)類時(shí),基類的公有成員和保護(hù)成員在派生類中都變?yōu)樗接谐蓡T,而基類的私有成員仍然不可訪問。這意味著派生類的用戶不能訪問基類的任何成員(公有、保護(hù)或私有)。派生類的成員函數(shù)可以訪問基類的公有和保護(hù)成員,但不能訪問私有成員。

    示例:

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

總之,C++類的繼承訪問權(quán)限允許您控制基類成員在派生類中的可見性。公有繼承使得基類成員在派生類中保持公有,保護(hù)繼承使得基類成員在派生類中變?yōu)楸Wo(hù)成員,而私有繼承使得基類成員在派生類中變?yōu)樗接谐蓡T。

0