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

1 昨日回顾

 

2 多态的原理

 

1 要有继承

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

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

 

(动态联编

 

虚函数表

 

 

3 证明vptr指针的存在

 

 

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

 

 

 

Child c;

 

1. 先调用Parent的构造函数

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

 

 

 

 

 

5 vptr指针分步的安全性

 

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

 

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

 

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

 

 

7 多态的总结

 

 

8 纯虚函数和抽象类

 

 

 

 

 

9 纯虚函数和抽象类2

 

10 中午回顾

 

11 多态案例的复习

 

多态三个条件:

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

 

12 多继承与纯虚函数

 

13 动物园多态案例

 

source.cpp:

Animal.h:

Animal.cpp:

 

Dog.h:

Dog.cpp:

 

 

 

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

 

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

 

animal.h:

 

 => 

 

增加架构函数:

调用:

 

 

14 电脑组装案例

 

定义CPU 显卡 内存 抽象类

 

定义电脑抽象类

 

实现层

 

 

 

高层业务逻辑层:

 

 

依赖反转原则:

 

 

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

 

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

 

posted @ 2019-03-11 21:48  hh9515  阅读(316)  评论(0编辑  收藏  举报