C++基础 (6) 第六天 继承 虚函数 虚继承 多态 虚函数_C++

 

C++基础 (6) 第六天 继承 虚函数 虚继承 多态 虚函数_子类_02

 

C++基础 (6) 第六天 继承 虚函数 虚继承 多态 虚函数_多态_03

 

C++基础 (6) 第六天 继承 虚函数 虚继承 多态 虚函数_父类_04

 

C++基础 (6) 第六天 继承 虚函数 虚继承 多态 虚函数_子类_05

 

 

继承是一种耦合度很强的关系 和父类代码很多都重复的

 

2 继承的概念

C++基础 (6) 第六天 继承 虚函数 虚继承 多态 虚函数_初始化_06

 

3 继承的概念和推演

 

语法:

 

class 派生类:访问修饰符 基类

 

C++基础 (6) 第六天 继承 虚函数 虚继承 多态 虚函数_父类_07

 

C++基础 (6) 第六天 继承 虚函数 虚继承 多态 虚函数_初始化_08

 

C++基础 (6) 第六天 继承 虚函数 虚继承 多态 虚函数_子类_09

 

代码:

C++基础 (6) 第六天 继承 虚函数 虚继承 多态 虚函数_C++_10

… …

 

4 继承方式与访问控制权限

C++基础 (6) 第六天 继承 虚函数 虚继承 多态 虚函数_子类_11

 

相对的说法:

爹派生

儿子继承

 

C++基础 (6) 第六天 继承 虚函数 虚继承 多态 虚函数_父类_12

 

子类虽然看起来是在父类的基础上增加了一些东西

但实际上子类和父类是完全独立的两个东西

 

C++基础 (6) 第六天 继承 虚函数 虚继承 多态 虚函数_父类_13

 

C++基础 (6) 第六天 继承 虚函数 虚继承 多态 虚函数_初始化_14

 

5 继承方式的练习

 

C++基础 (6) 第六天 继承 虚函数 虚继承 多态 虚函数_父类_15

 

C++基础 (6) 第六天 继承 虚函数 虚继承 多态 虚函数_子类_16

 

 

C++基础 (6) 第六天 继承 虚函数 虚继承 多态 虚函数_多态_17

 

 

6 继承类的兼容性原则

C++基础 (6) 第六天 继承 虚函数 虚继承 多态 虚函数_多态_18

子类空间比父类空间大

 

C++基础 (6) 第六天 继承 虚函数 虚继承 多态 虚函数_子类_19

 

7 利用兼容性原则的传参方式

C++基础 (6) 第六天 继承 虚函数 虚继承 多态 虚函数_子类_20

 

 C++基础 (6) 第六天 继承 虚函数 虚继承 多态 虚函数_多态_21

 

声明一个父类的指针 子类都可以使用

 

声明一个父类的指针 子类都可以使用

 

8 继承中的构造析构顺序

C++基础 (6) 第六天 继承 虚函数 虚继承 多态 虚函数_C++_22

 

C++基础 (6) 第六天 继承 虚函数 虚继承 多态 虚函数_C++_23

 

C++基础 (6) 第六天 继承 虚函数 虚继承 多态 虚函数_父类_24

 

C++基础 (6) 第六天 继承 虚函数 虚继承 多态 虚函数_父类_25

 

结论:子类在进行初始化成员变量的时候,如果此成员变量是继承过来的,那么需要调用父类的构造器来初始化

 

C++基础 (6) 第六天 继承 虚函数 虚继承 多态 虚函数_子类_26

 

9 当子类中有和父类重名的变量

 

C++基础 (6) 第六天 继承 虚函数 虚继承 多态 虚函数_初始化_27

 

如果想访问父类中的a需要加上父类的作用域,否则调用的是子类中覆盖的a

 

10 继承中的static成员

C++基础 (6) 第六天 继承 虚函数 虚继承 多态 虚函数_C++_28

 

C++基础 (6) 第六天 继承 虚函数 虚继承 多态 虚函数_初始化_29

 

C++基础 (6) 第六天 继承 虚函数 虚继承 多态 虚函数_子类_30

static不仅要在内部声明 也要在外部进行初始化

 

11 多继承的基本概念

C++基础 (6) 第六天 继承 虚函数 虚继承 多态 虚函数_C++_31

 

C++基础 (6) 第六天 继承 虚函数 虚继承 多态 虚函数_父类_32

 

C++基础 (6) 第六天 继承 虚函数 虚继承 多态 虚函数_初始化_33

 

C++基础 (6) 第六天 继承 虚函数 虚继承 多态 虚函数_初始化_34

 

12 多继承和虚继承

C++基础 (6) 第六天 继承 虚函数 虚继承 多态 虚函数_C++_35

 

需要使用虚继承

 

C++基础 (6) 第六天 继承 虚函数 虚继承 多态 虚函数_C++_36

 

C++基础 (6) 第六天 继承 虚函数 虚继承 多态 虚函数_父类_37

(这里b不知道是哪个的,产生二义性

 

C++基础 (6) 第六天 继承 虚函数 虚继承 多态 虚函数_C++_38

(编译器干的事情)

 

13 中午回顾

 

14 多态的基本概念

C++基础 (6) 第六天 继承 虚函数 虚继承 多态 虚函数_初始化_39

 

C++基础 (6) 第六天 继承 虚函数 虚继承 多态 虚函数_C++_40

 

C++基础 (6) 第六天 继承 虚函数 虚继承 多态 虚函数_初始化_41

C++基础 (6) 第六天 继承 虚函数 虚继承 多态 虚函数_子类_42

 

多态:可以用父类指针调用子类的方法,前提是(子类重写父类的虚函数

C++基础 (6) 第六天 继承 虚函数 虚继承 多态 虚函数_子类_43

 

 

15 多态小案例练习

 

C++基础 (6) 第六天 继承 虚函数 虚继承 多态 虚函数_多态_44

C++基础 (6) 第六天 继承 虚函数 虚继承 多态 虚函数_父类_45

 

16 多态的成立条件

C++基础 (6) 第六天 继承 虚函数 虚继承 多态 虚函数_父类_46

C++基础 (6) 第六天 继承 虚函数 虚继承 多态 虚函数_多态_47

C++基础 (6) 第六天 继承 虚函数 虚继承 多态 虚函数_多态_48

 

17 动态联编和静态联编

C++基础 (6) 第六天 继承 虚函数 虚继承 多态 虚函数_初始化_49

C++基础 (6) 第六天 继承 虚函数 虚继承 多态 虚函数_C++_50

C++基础 (6) 第六天 继承 虚函数 虚继承 多态 虚函数_初始化_51

加virtual关键字告诉编译器这块先别给我绑定 来个晚绑定,如果不加virtual就是静态联编了

 

18 虚析构函数

C++基础 (6) 第六天 继承 虚函数 虚继承 多态 虚函数_初始化_52

 

C++基础 (6) 第六天 继承 虚函数 虚继承 多态 虚函数_子类_53

 

C++基础 (6) 第六天 继承 虚函数 虚继承 多态 虚函数_子类_54

 

C++基础 (6) 第六天 继承 虚函数 虚继承 多态 虚函数_初始化_55

C++基础 (6) 第六天 继承 虚函数 虚继承 多态 虚函数_C++_56

 

加上virtual关键字后正常了

C++基础 (6) 第六天 继承 虚函数 虚继承 多态 虚函数_子类_57

 

19 重载重写重定义

 

重载  名字和返回值一样的两个函数

 

重写 (虚函数 加vitrual        两个类中

重定义                      两个类中

 

 

==========================================

// 2020.06.12 理解 继承的本质是申请与父类相同大小空间的结构体