c++

C++类的继承访问权限如何

小樊
82
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
看了该问题的人还看了