减少重复代码写法
实现方法
class 子类名 : public(继承方式) 父类名
{
// body
};
子类:派生类
父类:基类
继承的成员表示共性
新增的成员表示个性
继承方法
所有的继承方式都不能继承父类的私有域 继承但不可访问
保护继承得到的成员都是保护域
私有继承得到的成员都是私有域
父类中所有的非静态成员属性都会被子类继承下去
构造和析构顺序
构造基类
构造子类
析构子类
析构基类
同名成员
子类:直接访问 son.member
父类:加作用域 son.father::member
同名成员函数:
同上 加作用域调用
如果子类中出现和父类同名 隐藏父类所有同名成员函数
静态成员
和非静态的处理是一样的
通过类名访问:
Son::member
Son::Base::member
函数
同上
多继承语法
一个类继承多个类
class 子类 : 继承方式 父类, 继承方式 父类 ...
需要处理父类中同名成员
加作用域
可以理解为并不同名 有一个作用域的前缀
菱形继承
两个子类继承一个父类
同时有一个孙子类继承两个子类
注意处理同名成员 从父类继承得到的 加作用域区分
导致数据有两份的处理:
虚继承
class 子类名 : virtual public 父类名{};
虚基类
同名数据只有一份了 子类共享数据