天天看点

C++继承之public private protected

继承是C++代码复用的常用手段,发生在类之间,通过继承,子类可以拥有部分(甚至全部)父类的属性和行为。

C++类中经常会用到3个关键字:<code>public</code>,<code>private</code>,<code>protected</code>,用以限定访问级别以及继承方式。其中,用作访问级别限定时修饰的是类内成员,而用作继承方式时修饰的是类名。

访问级别

声明为<code>public</code>的成员,类外部、子类都可以访问

声明为<code>private</code>的成员,类外部、子类都不可以访问

声明为<code>protected</code>的成员,类外部不能访问、子类可以访问

通过对比可以发现private限制最严格,public限制最宽松,而protected介于二者之间。事实上protected是为继承而生的,能够有效防止继承后数据被外界访问,同时继承后的数据可以向类成员开放。

以下程序中,父类分别定义了三种访问级别的成员:<code>m_public</code>,<code>m_private</code>,<code>m_protected</code>,虽然子类中未定义成员变量,但子类继承了父类,因此子类中可以访问父类成员

运行结果

注:关于父类<code>protected</code>成员,在子类中可以正常访问,但不能通过子类对象访问,这样相当于在类外访问,如:

继承方式

同样是上例,子类<code>Derived</code>的定义中有<code>class Derived : public Base</code>,意为<code>public</code>继承自<code>Base</code>类

C++也支持private继承和protected继承,但一般只用<code>public</code>继承,原因是:

protected和private继承带来的复杂性远大于实用性

参考

狄泰软件学院 - C++深度解析教程 - 第44课、45课

继续阅读