![76b3c0bdaa78d9dd577b89562e50623a.png](https://i-blog.csdnimg.cn/blog_migrate/b975c03475da111ba92459aaaf668477.jpeg)
本文首发于:面试必知必会|理解C++虚函数 微信公众号:后端技术指南针 持续输出干货 欢迎关注 惊喜直达!
0.前言
在后端面试中语言特性的掌握直接决定面试成败,因此本公众号在在后续会持续输出编程语言的必知必会知识点系列。
C++语言一直在增加很多新特性来提高使用者的便利性,但是每种特性都有复杂的背后实现,充分理解实现原理和设计原因,才能更好地掌握这种新特性。
![0f7cc8cbbe8ee80130a162c81e284909.png](https://i-blog.csdnimg.cn/blog_migrate/0f2f059f9dac51b4b624e1b7c69aebc3.jpeg)
只要出发总会达到,只有出发才会到达,焦虑没用,学就完了,今天一起来学习C++的虚函数考点吧。
通过本文你将了解的以下内容:
- C++多态机制
- 虚函数的基本使用
- 虚函数的底层实现
- 纯虚函数和抽象类
- 虚析构函数
- 虚函数的优缺点
1.C++多态机制
- 多态机制简介
C++面向对象的三大特征:
- 多态(Polymorphism)
- 封装(Encapsulation)
- 继承(Inheritance)
从字面上理解多态就是多种形态,具体如何多种形态,多态和继承的关系非常密切,试想下面的场景:
- 派生类继承使用基类提供的方法,不需更改
- 同一个方法在基类和派生类的行为是不同的,具体行为取决于调用对象。
后者就是C++的多态需求场景,即同一方法的行为随调用者上下文而异,举个现实生活中类似的栗子,来加深理解:
基类Woker包括三个方法:打卡、午休、干活。
派生类包括产品经理PMer、研发工程师RDer、测试工程师Tester,派生类从基类Worker中继承了打卡、午休、干活三个方法。
打卡和午休对三个派生类来说是一样的,因此可以直接调用基类的方法即可。
但是每个派生类中干活这个方法具体的实现并不一样:产品经理提需求、研发写代码、测试找Bug。SomeWhere
![f242b45bde8704638ee733a6fab69c7c.png](https://i-blog.csdnimg.cn/blog_migrate/da214289a87fd9a6725a9f46bf09bb9b.jpeg)
计算机程序的出现就是为了解决现实中的问题,从上面的例子可以看到,这种同一方法的行为随调用者而异的需求很普遍