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. 核心用途:定接口规范 + 多态统一批量管理多个子类
相关推荐
2601_962071572 小时前
【Java报错已解决】org.springframework.beans.factory.BeanCreationException
java·开发语言
淡海水3 小时前
07-04-并发-ConcurrentBag-T-工作窃取WorkStealing算法
开发语言·算法·c#·bag·concurrent·workstealing
CS_Zero4 小时前
C语言sizeof是函数吗?
c语言·开发语言
-今昭-5 小时前
《V2V 迁移实战:将 VMware 虚拟机转为 OpenStack 可用 Glance qcow2 镜像》
开发语言·python
黑马程序员毕设7 小时前
基于Java的医院药品管理系统的优化设计与实现
java·开发语言·spring boot·小程序·架构·课程设计·毕设
_Twink1e7 小时前
openJiuwen 实训营 Day 1 · WorkSwarm 入门教程
开发语言·c++·openjiuwen
Latticy7 小时前
vulnhub系列靶机-Photographer
网络·网络安全·内网渗透·内网
问天_观心7 小时前
大模型微调学习(一)
开发语言·人工智能·学习·语言模型·github
阿里嘎多学长7 小时前
2026-09-03 GitHub 热点项目精选
开发语言·程序员·github·代码托管
dong_junshuai8 小时前
每天一个开源项目#87 fmt:24.5K Stars 的 C++ 格式化核心
c++·开源·github