C++基础 (7) 第七天 多态的原理 纯虚函数和抽象类 依赖倒置原则

时间:2023-03-09 04:14:16
C++基础 (7) 第七天 多态的原理 纯虚函数和抽象类 依赖倒置原则

1 昨日回顾

2 多态的原理

1 要有继承

2 要有子类重写父类的虚函数

3 父类指针(或者引用)指向子类对象

C++基础 (7) 第七天 多态的原理 纯虚函数和抽象类 依赖倒置原则

C++基础 (7) 第七天 多态的原理 纯虚函数和抽象类 依赖倒置原则

(动态联编

虚函数表

C++基础 (7) 第七天 多态的原理 纯虚函数和抽象类 依赖倒置原则

3 证明vptr指针的存在

C++基础 (7) 第七天 多态的原理 纯虚函数和抽象类 依赖倒置原则

C++基础 (7) 第七天 多态的原理 纯虚函数和抽象类 依赖倒置原则

4 vptr指针在构造父类的时候是分步初始化的

C++基础 (7) 第七天 多态的原理 纯虚函数和抽象类 依赖倒置原则

C++基础 (7) 第七天 多态的原理 纯虚函数和抽象类 依赖倒置原则

Child c;

1. 先调用Parent的构造函数

2. 调用的时候vptr指针会先指向父类的虚函数表

C++基础 (7) 第七天 多态的原理 纯虚函数和抽象类 依赖倒置原则

C++基础 (7) 第七天 多态的原理 纯虚函数和抽象类 依赖倒置原则

C++基础 (7) 第七天 多态的原理 纯虚函数和抽象类 依赖倒置原则

C++基础 (7) 第七天 多态的原理 纯虚函数和抽象类 依赖倒置原则

5 vptr指针分步的安全性

根据上一节课所讲内容 应该可以得出结论:

C++基础 (7) 第七天 多态的原理 纯虚函数和抽象类 依赖倒置原则

6 父类指针和子类指针的步长

C++基础 (7) 第七天 多态的原理 纯虚函数和抽象类 依赖倒置原则

C++基础 (7) 第七天 多态的原理 纯虚函数和抽象类 依赖倒置原则

这样虽然能运行,但是要注意,如果子类的private中多了一个int b 那么子类的步长就变长了,步长和父类不一样,运行的时候就会报错。

C++基础 (7) 第七天 多态的原理 纯虚函数和抽象类 依赖倒置原则

7 多态的总结

C++基础 (7) 第七天 多态的原理 纯虚函数和抽象类 依赖倒置原则

8 纯虚函数和抽象类

C++基础 (7) 第七天 多态的原理 纯虚函数和抽象类 依赖倒置原则

C++基础 (7) 第七天 多态的原理 纯虚函数和抽象类 依赖倒置原则

C++基础 (7) 第七天 多态的原理 纯虚函数和抽象类 依赖倒置原则

C++基础 (7) 第七天 多态的原理 纯虚函数和抽象类 依赖倒置原则

9 纯虚函数和抽象类2

10 中午回顾

11 多态案例的复习

C++基础 (7) 第七天 多态的原理 纯虚函数和抽象类 依赖倒置原则

多态三个条件:

  1. 要有继承
  2. 要有虚函数重写
  3. 父类指针指向子类对象

12 多继承与纯虚函数

C++基础 (7) 第七天 多态的原理 纯虚函数和抽象类 依赖倒置原则

C++基础 (7) 第七天 多态的原理 纯虚函数和抽象类 依赖倒置原则

13 动物园多态案例

C++基础 (7) 第七天 多态的原理 纯虚函数和抽象类 依赖倒置原则

source.cpp:

C++基础 (7) 第七天 多态的原理 纯虚函数和抽象类 依赖倒置原则

Animal.h:

C++基础 (7) 第七天 多态的原理 纯虚函数和抽象类 依赖倒置原则

Animal.cpp:

C++基础 (7) 第七天 多态的原理 纯虚函数和抽象类 依赖倒置原则

Dog.h:

C++基础 (7) 第七天 多态的原理 纯虚函数和抽象类 依赖倒置原则

Dog.cpp:

C++基础 (7) 第七天 多态的原理 纯虚函数和抽象类 依赖倒置原则

C++基础 (7) 第七天 多态的原理 纯虚函数和抽象类 依赖倒置原则

注意: 没有执行dog的析构函数

如果想执行dog的析构函数 需要在animal类中给析构函数加virtual关键字

animal.h:

C++基础 (7) 第七天 多态的原理 纯虚函数和抽象类 依赖倒置原则 => C++基础 (7) 第七天 多态的原理 纯虚函数和抽象类 依赖倒置原则

增加架构函数:

C++基础 (7) 第七天 多态的原理 纯虚函数和抽象类 依赖倒置原则

C++基础 (7) 第七天 多态的原理 纯虚函数和抽象类 依赖倒置原则

调用:

C++基础 (7) 第七天 多态的原理 纯虚函数和抽象类 依赖倒置原则

C++基础 (7) 第七天 多态的原理 纯虚函数和抽象类 依赖倒置原则

14 电脑组装案例

C++基础 (7) 第七天 多态的原理 纯虚函数和抽象类 依赖倒置原则

定义CPU 显卡 内存 抽象类

C++基础 (7) 第七天 多态的原理 纯虚函数和抽象类 依赖倒置原则

定义电脑抽象类

C++基础 (7) 第七天 多态的原理 纯虚函数和抽象类 依赖倒置原则

实现层

C++基础 (7) 第七天 多态的原理 纯虚函数和抽象类 依赖倒置原则

C++基础 (7) 第七天 多态的原理 纯虚函数和抽象类 依赖倒置原则

高层业务逻辑层:

C++基础 (7) 第七天 多态的原理 纯虚函数和抽象类 依赖倒置原则

依赖反转原则:

C++基础 (7) 第七天 多态的原理 纯虚函数和抽象类 依赖倒置原则

C++基础 (7) 第七天 多态的原理 纯虚函数和抽象类 依赖倒置原则

在这里案例中的依赖倒置原则:

C++基础 (7) 第七天 多态的原理 纯虚函数和抽象类 依赖倒置原则

面向电脑类编程(依赖倒置原则)

C++基础 (7) 第七天 多态的原理 纯虚函数和抽象类 依赖倒置原则