持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第23天,点击查看活动详情
每篇前言
今天笔记的内容是:
- 纯虚函数和抽象类
1️⃣概述
什么是纯虚函数?
之前我们讲过虚函数,即在基类中被声明为virtual,且在派生类中重新定义的成员函数,其可实现成员函数的动态重载。但需要注意,虚函数里是可以有实现语句的。而什么是纯虚函数?
纯虚函数就是一种特殊的虚函数,也叫抽象函数。在基类中,没有对虚函数给出有意义的实现语句,而是将其定义为纯虚函数,即纯虚函数并没有函数体。而纯虚函数的实现工作就交给派生类去做。这就是纯虚函数的作用。就类似在JAVA中,用关键字abstract去修饰函数。表示其为抽象函数。
什么是抽象类?
有了纯虚函数的类就属于抽象类。
注意:抽象类无法实例化对象。
即声明了纯虚函数的类是一个抽象类。并且无法创建抽象类的实例。如类myClass是抽象类,那么语句:myClass a;是无法实现的。所以我们只能创建它的派生类的实例。但是派生类必须重写基类的纯虚函数,否则子类也是抽象类。
纯虚函数的语法
virtual 返回值类型 函数名(形参列表) = 0;
2️⃣小结
- 纯虚函数的用处在于规范派生类的行为。
- 带有纯虚函数的类我们称为抽象类。
- 抽象类是一种特殊的类,只能作为一个父类来使用。
- 抽象类中纯虚函数的定义由子类来实现。
- 如果子类中没有重定义纯虚函数,而只是继承父类的纯虚函数,那么这个子类仍然还是一个抽象类。
- 如果子类中给出了父类纯虚函数的实现,那么该子类就不再是抽象类了,而是一个可以创建对象的具体类。
3️⃣写在最后
本章笔记参考书:
《C++程序设计教程》---- 钱能 著
好了,本篇笔记就到写这,欢迎大家到评论区一起讨论!