C++纯虚函数

纯虚函数定义与特征

  1. 语法格式
    virtual 返回值 函数名(参数列表) = 0;
    ● 开头必须加 virtual,末尾赋值 =0,没有函数实现体
  2. 包含至少一个纯虚函数的类 = 抽象类
  3. 抽象类内部可以同时存在普通成员变量、普通成员函数、虚函数、纯虚函数,不只能写纯虚函数

抽象类核心特征

  1. 禁止实例化:不能直接 抽象类 变量; 或者 new 抽象类 创建对象
  2. 强制约束子类:所有继承抽象类的子类,必须重写全部纯虚函数;如果子类不全实现,子类也会变成抽象类,同样不能创建对象
  3. 作用:定义统一接口规范,统一约束所有子类的行为

抽象类意义与价值

  1. 规范约束:给所有子类定下必须实现的功能接口,保证子类行为格式统一
  2. 统一多态管理:可以用抽象类指针 / 引用接收任意子类对象,编写一套通用代码操作全部子类
  3. 扩展性强:新增子类时,只要实现纯虚接口,原有通用代码完全不用修改

案例

1:银行利率业务

抽象父类(银行基类)

运行结果:

各大银行存款利率查询

当前年利率:1.95%

当前年利率:2.1%

2:批量统一遍历统计(统一管理子类)

无抽象类的弊端

如果不用抽象类 + 纯虚函数,工行、建行是两个完全无关的类,无法用同一个指针数组存放,必须分开写两套打印逻辑,代码冗余、难维护

速记总结

  1. 纯虚函数:virtual fun() = 0; 无实现体
  2. 含纯虚函数 → 抽象类,不能造对象
  3. 子类必须重写全部纯虚函数,否则子类也是抽象类
  4. 核心用途:定接口规范 + 多态统一批量管理多个子类
相关推荐
倒头就睡的小比特2 天前
算法竞赛C++常用的STL
c++·算法
weilx12342 天前
C++笔记-文件IO-<fcntl.h>
c++
小羊没烦恼!2 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
伞伞悦读2 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
Smileyqp沛沛3 天前
前端?C++ ?较大差异基础罗列
c++·基础·前端转c++
C语言小火车3 天前
C/C++ 为什么需要编译器?
开发语言·c++
旖旎夜光3 天前
力控面试题 01.01: 判定字符是否唯一(位运算) —— 题解
c++·学习·算法·leetcode·力控
吞下星星的少年·-·3 天前
C++ 萌新语法入门篇
c++·算法比赛
霍霍的袁3 天前
【C++】map 和 set 的使用 | 从用法到底层
开发语言·c++·学习·visual studio
another heaven3 天前
【算法/C++ MD5算法能否逆解码?原理、C++实现与同类哈希算法对比】
c++·算法·哈希算法