前言
再上一则教程中,着重讲述了派生类继承于父类之后的一些访问控制,在本次教程中,将介绍如下几个点:派生类扩展父类功能,派生类的空间分布,以及多重继承的相关概念。
派生类扩展父类的功能
在前文所述的 类我们通常也称之为父类或者说称之为基类,而 类我们则称之为子类或者是派生类,我们知道通过继承的方式类可以继承到父类的 ,那么我们可不可以将这个继承得到的 发扬光大呢际上是可以的,用更加专业的话来讲就是覆写,也就是 ,代码如下所示:
注意上述的和类的 是相同的一个函数,只是在 类里对这个函数进行了覆写,这个时候,如果向如下方式调用 ,那么就会调用的是 类里面定义的 。
派生类的空间分布(内存分布)
在讲述派生类的空间分布的时候,我们采用 类和 类进行阐述,首先 类具有如下的属性:
然后,类以 的方式从 类中继承而来,代码如下所示:
上述就是类以 方式继承自 类的一个例子,因为 类中也存在其自身的私有数据成员,所以,总的来说,类和类之间的关系如下所示:
通过上述地输出信息,也可以知道,在第十行代码中, 实参传入地是 地实例化对象,但是在执行代码地时候,它执行的是类的 函数,也就是说,虽然传进去的是 的实例化对象,但是真正起作用的是实例化对象中继承自 类的那部分。
多重继承
多重继承也就如字面意思一样,就是说派生类继承自多个父类,这就称之为是多重继承,简单来说,就是一个派生类可以有多个基类。基于上面的叙述,我们用一个例子来说明,比如我们现在有如下两个基类:
那我们现在有一个派生类从这两个基类继承而来,代码如下所示:
既然是从两个基类中继承而来,自然也就满足在之前的教程里所述的访问控制的原则,并为继承所得到的派生类也满足基类所具备的一些特性:
上述代码的执行结果也显而易见,执行结果如下所示:
这样子就会存在一个问题,如果我们在主函数这样子定义了一个实例化对象,并调用它的成员函数:
这个时候从 和两个类中继承而来,那么自然也就具备了和的属性,但是这个时候实例化的 调用 的时候,并不知道操作的是从哪里继承而来的,因此也就造成了错误(注释表明了)。如果在不更改继承方式的前提下,也可以这样书写避免错误:
但是这
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!