继承
继承是面向对象三大特性之一 有些类与类之间存在的特殊关系
我们发现,定义这些类时,下级别的成员除了拥有上一级的特性,还拥有自己的特性.
这时候我们就考虑利用继承的技术,减少重复的代码.
集成的基本语法
例如我们很多网站上所看到的,都有公共的头部,公共的底部,甚至公共的左侧列表,只有中心内容不一样
集成的好处:可以减少重复的代码
class A:public B;
A 类称为子类或者叫做派生类
B 类称为父类或者叫做基类
派生类的成员,包含两大部分:
一类是从基类继承过来的,一类是自己增加的成员
从基类继承过来的表现其共性,而新增的成员体现其个性.
继承方式
继承语法: class 子类: 继承方式 父类
继承方式一共有三种
- 公共继承
- 保护继承
- 私有继承
菱形继承
典型的菱形继承案例:
菱形继承问题:
- 羊继承了动物的数据,驼同样继承了动物的数据,当草泥马使用数据,就会产生二义性.
- 草泥马继承自动物的数据继承了两份,其实我们应该清楚,这份数据我们只需要一份就可以.
解决方法:
继承前面加 virtual 关键字后,变成虚继承
此时公共的父类 Animal 称为虚基类
的原理是指针