在C++中,类的继承访问权限主要有三种:public(公有)、protected(保护)和private(私有)。这些访问权限决定了基类成员在派生类中的可见性。
-
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; // 错误!无法访问基类的私有成员 } };
-
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; // 错误!无法访问基类的私有成员 } };
-
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++类的继承访问权限允许您控制基类成员在派生类中的可见性。公有继承使得基类成员在派生类中保持公有,保护继承使得基类成员在派生类中变为保护成员,而私有继承使得基类成员在派生类中变为私有成员。