【C++】:纯虚函数和抽象类

129 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第23天,点击查看活动详情

每篇前言

今天笔记的内容是:

  • 纯虚函数和抽象类

1️⃣概述

什么是纯虚函数?

之前我们讲过虚函数,即在基类中被声明为virtual,且在派生类中重新定义的成员函数,其可实现成员函数的动态重载。但需要注意,虚函数里是可以有实现语句的。而什么是纯虚函数?

纯虚函数就是一种特殊的虚函数,也叫抽象函数。在基类中,没有对虚函数给出有意义的实现语句,而是将其定义为纯虚函数,即纯虚函数并没有函数体。而纯虚函数的实现工作就交给派生类去做。这就是纯虚函数的作用。就类似在JAVA中,用关键字abstract去修饰函数。表示其为抽象函数。


什么是抽象类?

有了纯虚函数的类就属于抽象类。

注意:抽象类无法实例化对象。

即声明了纯虚函数的类是一个抽象类。并且无法创建抽象类的实例。如类myClass是抽象类,那么语句:myClass a;是无法实现的。所以我们只能创建它的派生类的实例。但是派生类必须重写基类的纯虚函数,否则子类也是抽象类。


纯虚函数的语法

virtual 返回值类型 函数名(形参列表) = 0;

2️⃣小结

  1. 纯虚函数的用处在于规范派生类的行为
  2. 带有纯虚函数的类我们称为抽象类。
  3. 抽象类是一种特殊的类,只能作为一个父类来使用。
  4. 抽象类中纯虚函数的定义由子类来实现。
  5. 如果子类中没有重定义纯虚函数,而只是继承父类的纯虚函数,那么这个子类仍然还是一个抽象类。
  6. 如果子类中给出了父类纯虚函数的实现,那么该子类就不再是抽象类了,而是一个可以创建对象的具体类。

3️⃣写在最后

本章笔记参考书:

《C++程序设计教程》---- 钱能 著


好了,本篇笔记就到写这,欢迎大家到评论区一起讨论!