继承关系和访问限定符
在C++继承的方式有三种,和访问限定符使用的关键字一样;但是它们的内涵是不一样的;
我们经常会搞混继承方式和访问限定符之间的关系,当一个派生类通过这三种方式继承了父类,父类中的成员访问限定符也会起作用;
它们之间的联系是什么呢?
在派生类中继承基类成员访问方式的变化
注意: 一旦我们派生类继承了基类,在派生类中是否可以访问到基类的成员是由继承方式和基类的访问限定符有关系
决定的;
在派生类中:是否可以访问到基类,可以通过下表查询;
但是这派生类中,有9种关系,是否可以访问到基类的成员,不免过于复杂;
我们总结道规律:
总结:
-
基类private成员在派生类中无论以什么方式继承都是不可见的。这里的不可见是指基类的私有成员还是
被继承到了派生类对象中,但是语法上限制派生类对象不管在类里面还是类外面都不能去访问它。 -
基类private成员在派生类中是不能被访问,如果基类成员不想在类外直接被访问,但需要在派生类中能
访问,就定义为protected。可以看出保护成员限定符是因继承才出现的。 -
实际上面的表格我们进行一下总结会发现,基类的私有成员在子类都是不可见。基类的其他成员在子类
的访问方式 == Min(成员在基类的访问限定符,继承方式),public > protected > private。 -
在实际运用中一般使用都是public继承,几乎很少使用protetced/private继承,也不提倡使用protetced和/private继承,因为protetced/private继承下来的成员都只能在派生类的类里面使用,实际中扩展维护性不强。