当前位置: 首页 > news >正文

C++ 纯虚函数和虚函数的区别

在 C++ 中,虚函数(Virtual Function)和纯虚函数(Pure Virtual Function)都是用于实现多态性的机制,但它们之间有一些关键的不同。

虚函数(Virtual Function)

  1. 定义:在基类中使用 virtual 关键字声明的成员函数。
  2. 目的:允许在派生类中重写该函数。
  3. 实现:基类通常会提供该虚函数的默认实现。
  4. 可选性:派生类可以选择是否重写该虚函数。如果派生类没有重写该函数,基类的实现会被使用。
  5. 示例
    class Shape {
    public:virtual void draw() {// 默认实现std::cout << "Drawing a shape." << std::endl;}
    };class Circle : public Shape {
    public:void draw() override {// 重写基类的 draw 函数std::cout << "Drawing a circle." << std::endl;}
    };
    

纯虚函数(Pure Virtual Function)

  1. 定义:在基类中使用 virtual 关键字声明,并且设置为 0 的成员函数。
  2. 目的:强制派生类重写该函数,以实现多态性。
  3. 实现:基类不提供该纯虚函数的任何实现。
  4. 可选性:派生类必须重写该纯虚函数,否则编译器会报错。
  5. 抽象类:包含纯虚函数的类称为抽象类。不能创建抽象类的实例。
  6. 示例
    class Shape {
    public:virtual void draw() = 0;  // 纯虚函数
    };class Circle : public Shape {
    public:void draw() override {// 必须重写基类的 draw 函数std::cout << "Drawing a circle." << std::endl;}
    };
    

总结

  • 虚函数允许派生类重写该函数,但是不强制。基类通常有一个默认的实现。
  • 纯虚函数强制派生类必须重写该函数,并且基类不能有实现。包含纯虚函数的类是抽象类。
http://www.lryc.cn/news/137933.html

相关文章:

  • Go中的有限状态机FSM的详细介绍 _
  • Python入门教程 | Python3 基本数据类型
  • STM32移植u8g2玩转oled 用软件iic实现驱动oled
  • C++ 学习系列 -- string 实现
  • C语言小练习(三)
  • 2023 js逆向爬虫 有道翻译 代码
  • 【物联网无线通信技术】NFC从理论到实践(FM17XX)
  • Python爬虫猿人学逆向系列——第六题
  • idea使用tomcat
  • 搭建Tomcat HTTP服务:在Windows上实现外网远程访问的详细配置与设置教程
  • Java学习笔记——继承(包括this,super的使用总结)
  • Android 获取应用sha1和sha256
  • c# 方法参数修饰符(out、ref、in)的区别
  • shell 编写一个带有进度条的程序安装脚本
  • 服务器数据恢复-AIX PV完整镜像方法以及误删LV的数据恢复方案
  • 首席执行官Adam Selipsky解读“亚马逊云科技的技术产品差异化”
  • C++ Day3
  • OpenEuler 安装mysql
  • [Docker] Windows 下基于WSL2 安装
  • (未完成)【Spring专题】SringAOP底层原理解析——阶段三(AOP)
  • 使用Nodejs创建简单的HTTP服务器,借助内网穿透工具实现公网访问的方法分享
  • 使用 OpenTelemetry 构建可观测性 03 - 导出
  • Pyqt5打开电脑摄像头进行拍照
  • Flowable 7.0.0.M2 版本功能
  • 【golang】关于指针的有限操作
  • ProGuard + SpringBoot3 + JDK17
  • Kafka面试
  • Amazon CloudFront 部署小指南(六)- Lambda@Edge 基础与诊断
  • centos7安装hadoop 单机版
  • 村口的人家排放污水,污水浸染了整个村子,怎么办