在C++中,public、private和protected继承有什么区别?
在C++中,public、private和protected继承有什么区别?
在C ++中,public
,private
和protected
继承有什么区别?
我找到的所有问题都涉及具体情况。
admin 更改状态以发布 2023年5月24日
为了回答这个问题,我想先用自己的话描述成员访问器。如果你已经知道了,就跳到“下一步:”的标题。
我知道有三个访问器:public
、protected
和 private
。
设:
class Base { public: int publicMember; protected: int protectedMember; private: int privateMember; };
- 所有知道
Base
的人都知道Base
包含publicMember
。 - 只有子类(以及子类的子类)知道
Base
包含protectedMember
。 - 除了
Base
以外,没有人知道privateMember
。
通过“知道”,我是指“认识到其存在,并因此能够访问”
下一步:
相同的情况也发生在公共的、私有的和受保护的继承中。让我们考虑一个类 Base
和一个继承自 Base
的类 Child
。
- 如果继承是
public
的,所有知道Base
和Child
的人都知道Child
继承自Base
。 - 如果继承是
protected
的,只有Child
及其子类知道它们继承自Base
。 - 如果继承是
private
的,除了Child
以外,没有人知道继承关系。
class A { public: int x; protected: int y; private: int z; }; class B : public A { // x is public // y is protected // z is not accessible from B }; class C : protected A { // x is protected // y is protected // z is not accessible from C }; class D : private A // 'private' is default for classes { // x is private // y is private // z is not accessible from D };
重要提示:B类、C类和D类都包含变量x、y和z。这只是一个访问问题。
关于使用protected和private继承,您可以在这里阅读。