继承
廖家龙 用心听,不照做

继承是面向对象三大特性之一

定义某些类时,下级别的成员除了拥有上一级的共性,还有自己的特性,这个时候我们就可以考虑利用继承的技术,减少重复代码

继承方式:公共继承、保护继承、私有继承

继承中的对象模型:

继承中的构造和析构顺序:子类继承父类后,当创建子类对象,也会调用父类的构造函数;先构造父类,再构造子类,析构的顺序与构造的顺序相反

继承同名成员处理方式:

当子类与父类出现同名的成员,如何通过子类对象访问到子类或者父类中同名的数据呢?
1)访问子类同名成员,直接访问即可
2)访问父类同名成员,需要加作用域

继承同名静态成员处理方式:静态成员和非静态成员出现同名,处理方式一致;访问子类同名成员,直接访问即可;访问父类同名成员,需要加作用域

多继承:C++允许一个类继承多个类,多继承可能会引发父类中有同名成员出现,需要加作用域区分;C++实际开发中不建议用多继承
class Son:public Base1,public Base2

菱形继承:两个派生类继承同一个基类,又有某个类同时继承着两个派生类,这种继承被称为菱形继承,或者钻石继承

出现的问题:
1)羊继承了动物的数据,驼同样继承了动物的数据,当羊驼使用数据时,就会产生二义性
2)羊驼继承自动物的数据继承了两份,但是这份数据我们只需要一份就可以