前言
我们为什么需要继承?
在每个子类子系统中,总会有相同的属性,如果每写一个子类就写一遍共同属性,浪费时间与空间,于是继承出现了。继承允许我们依据另一个类来定义一个类,这使得创建和维护一个应用程序变得更容易。这样做,也达到了重用代码功能和提高执行时间的效果。
1. 继承基本语法
son是子类 father是父类
class son: 继承方式 father
2.继承的方式
一张图说明
注意无论哪种继承方式都不能访问父类中的私有元素。
3.继承中的对象模型
Class Base
{
Public:
Protect:
Private:
}
Class son :public Base
{
Public:
int m_D;
}
size of(Son)是多少呢?
答案是 16。
说明:父类中所有非静态成员属性都会被子类继承。
父类中私有变量 是被编译器隐藏了 但却是被继承了 只是访问不到
4.继承中构造和析构顺序
父类与子类构造与析构的顺序谁先谁后??
通过代码验证得
继承中的构造与析构顺序为:先构造父类,再构造子类, 析构相反。
5.继承中同名成员处理
(1)同名变量
父类中有一个变量m_A
子类继承父类但子类中有一个同名变量m_A ,这时输出m_A 结果会是多少呢?
直接写会得到子类m_A
若想得到父类需加作用域 即 父类::m_A.
(2)同名函数
直接调用是子类
得父类加作用域 父类::子类.函数()。
注意:有同名成员函数,子类同名成员会隐藏掉父类中所有成员函数
6.继承中的同名静态成员处理
7.多继承语法
一个儿子允许有多个父亲
语法: class子类:继承方式 父类1,继承方式 父类2,继承方式 父类3…
父类中出现同名成员需加作用域区分