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

2023-11-04

关于虚函数的定义是:被virtual关键字修饰的成员函数。

关于纯虚函数的定义是:是一种特殊的虚函数,在许多情况下,在基类中不能对虚函数给出有意义的实现,把它声明为纯虚函数,它的实现留给该基类的派生类去做。这是是纯虚函数。 

虚函数的简单实例:

定义:virtual void 类名:test1();

实现:void 类名:test();

虚函数的定义和实现要一起,就是说定义了函数一定要实现;而纯虚函数一定要在基类中定义,在派生类中实现,如果派生类不实现的话不能实例化对象。

如果有派生类实现了基类中的纯虚函数后,就可以把这个纯虚函数函数当作虚函数对待了。

由虚函数和纯虚函数衍生出来的各种类。一般类,虚类,(抽象类)纯虚类、接口。

一般类:没有虚函数或纯虚函数的类。

虚类的定义是:定义了虚函数的类是虚类。但是个人觉得应该这样定义比较稳妥:含有虚函数且没有纯虚函数的类是虚类。

纯虚类的定义是:定义了纯虚函数的类是纯虚类,更多的是叫抽象类。纯虚类可以有成员变量。纯虚类不能实例化。

接口:只定义了纯虚函数的类叫接口。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

c++虚函数和纯虚函数的区别 的相关文章

  • 检查数据库中是否存在记录

    我正在使用这些代码行来检查记录是否存在 SqlCommand check User Name new SqlCommand SELECT FROM Table WHERE user txtBox UserName Text conn int
  • 如何从对Web服务发出的请求中获取客户端IP地址

    我的 IIS 中托管有一个 Web 服务 当客户端直接使用我的服务时 我需要找出客户端 IP 地址 like http MyIpAddress MyApplication MyWebServiceClass asmx http MyIpAd
  • 如何准备sql语句并绑定参数?

    不幸的是 文档 http www sqlite org完全缺乏示例 这真的很奇怪 就好像它假设所有读者都是优秀的程序员一样 然而 我对C 并且无法真正从文档中弄清楚如何真正准备和执行语句 我喜欢它的实施方式PDO for PHP 通常 我只
  • 为基于架构的 XML 文件创建 WPF 编辑器

    这是场景 我们的服务器产品之一使用大型 XML 配置文件 该文件的布局相当好 并且针对 XSD 文件进行了验证 现在是时候构建一个配置 GUI 来维护这个文件了 我想深入研究 WPF 来完成它 我可以为每个配置部分布置一个单独的表单 每次向
  • 如何进行Visual Studio格式字典初始化?

    所有 Visual Studio 也包括 2012 不格式化以下内容 messageProcessor new Dictionary
  • C 中的双重否定:是否保证返回 0/1?

    Is x 标准保证返回0 1 请注意 我是not询问 C 其中定义了 bool 类型 是的 在 C99 中 请参阅 6 5 3 3 4 逻辑非运算符的结果 是0如果其操作数的值比较 不等于0 1如果其操作数的值比较等于 0 结果具有类型in
  • 如何在 C# 中创建 PKCS12 .p12 文件?

    这可能是一个n00b问题 但我在这方面确实没有任何经验 我需要创建一个包含 X509 证书和私钥的 p12 捆绑包 我当前有两个对象 X509Certificate2 和包含关键信息的 RSAParameters 对象 如何将它们合并到 p
  • 如何在控制器中使用多个 DBContext

    如何在控制器中使用多个 DBContext 我尝试以不同的方式重载构造函数 一些控制器 public C1 DBContext1 a DBContext2 b DBContext3 c public C1 DBContext1 a publ
  • 无法在 Visual Studio 和 vcpkg 中构建 cmake 项目(致命错误 C1083)

    我今天安装了vcpkg 启用了与Visual Studio的集成 即 vcpkg集成安装 并开始安装库 我基本上安装了 cpprestsdk 并触发了 boost 库的安装 然后我在 Visual Studio CMake 中打开该项目 当
  • 指向 VLA 的指针

    你可能知道 VLA 的优点和缺点 https stackoverflow com a 3082302 1606345在 C11 中它们是可选的 我认为使 VLA 成为可选的主要原因是 堆栈可能会爆炸 int arr n where n 10
  • Bazel:将编译标志添加到默认 C++ 工具链

    我想向默认的 C 工具链添加一些编译器和链接器标志 以便我构建的所有目标 本地或导入 共享它们 我知道可以定义我自己的工具链 但我不想这样做 因为它非常复杂且容易出错 理想情况下我想要这样的东西 cc toolchain cc defaul
  • 多个包含带有变量定义的头文件

    我只是构建一个简单的 C 项目 代码如下所示 head h ifndef HEAD H define HEAD H int my var 100 endif src1 cpp include head h src2 cpp include
  • 从 cin 读取整数序列并将它们存储在向量中

    这就是我读取整数的方法std cin并将它们存储在向量中 int number vector
  • 为什么将未使用的返回值转换为 void?

    int fn void whatever void fn 是否有任何理由将未使用的返回值强制转换为 void 或者我认为这完全是浪费时间 David s answer https stackoverflow com questions 68
  • OpenSSL:无需 SSL_read() / SSL_write() 即可执行加密/解密

    我已经用 C 语言编写了一个基于事件的网络库 现在我想通过 OpenSSL 添加 SSL TLS 支持 而不是使用SSL read and SSL write 我宁愿让 OpenSSL 只执行传出 传入数据的加密 解密 让我自己传输 接收数
  • 为什么在 C++ 类中的数据成员上使用像 m_ 这样的前缀?

    许多 C 代码使用语法约定来标记数据成员 常见的例子包括 m memberName对于公共成员 在所有使用公共成员的情况下 memberName对于私人会员或所有会员 其他人尝试强制使用this gt member每当使用数据成员时 根据我
  • 提升shared_from_this<>()

    有人可以用几句话概括一下如何提升shared from this lt gt 应该使用智能指针 特别是从使用绑定函数在 io service 中注册处理程序的角度来看 编辑 一些回复要求提供更多背景信息 基本上 我正在寻找 陷阱 即人们使用
  • 曲线/路径骨架二值图像处理

    我正在尝试开发一个可以处理图像骨架的路径 曲线的代码 我想要一个来自两点之间骨架的点向量 该代码在添加一些点后结束 我没有找到解决方案 include opencv2 highgui highgui hpp include opencv2
  • SQL Server CE 不兼容的数据库版本

    我有一个 SQL Server CE 4 0 数据库 sdf文件 当我尝试从我的应用程序 WPF 对数据库进行查询时 出现以下错误 数据库版本不兼容 如果这是兼容文件 请运行修复 其他情况请参考文档 数据库版本 4000000 请求的版本
  • 使用 ImageResizer 获取图像尺寸的最佳方法

    我正在将现有的 MVC 4 网站从自制用户文件上传切换为在上传时使用 ImageResizer 调整文件大小 我在文档中看到我不应该使用 System Drawing 但我无法找出任何其他获取图像尺寸的方法 尺寸是来自原始图像还是调整大小的

随机推荐

  • VMware安装Ubuntu 18.04虚拟机(镜像下载、硬盘分区、创建虚拟机、安装系统、桥接模式网络配置)

    1 VMware安装 安装VMware Player免费 而且功能足够个人开发使用 Pro的主要区别在于可以同时运行多个虚拟机 而Player只能同时运行一个 VMware Workstation Player 16 下载 VMware W
  • WSL 的问题记录

    Windows 的 Linux 子系统 之前我在这台电脑上已经安装成功 也在里面运行了 Delphi 的 PAServer 测试了把 Delphi IDE 连接上去 成功编译一个 Linux 的程序 也测试了下载一个 LINUX 的 GUI
  • 一.eMMC 简介

    1 前言 熟悉Linux kernel的人都知道 kernel使用MMC subsystem统一管理MMC SD SDIO等设备 为什么呢 到底什么是MMC SD和SDIO又是什么 为什么可以用MMC统称呢 在分析Linux kernel的
  • 外盘国际期货

    人口负增长的国家有多少 在全球169个主要国家和地区中 有35个处于人口增长 新加坡 4 20 克罗地亚 3 70 卡塔尔 2 60 科威特 2 60 捷克 1 80 波黑 1 40 黎巴嫩 1 20 巴林 1 00 委内瑞拉 1 00 中
  • 兔子--android:ems="3"是什么意思

    android ems 3 设置Textview或者是Edittext的宽度为3个字符的宽度 当设置该属性后 控件的长度就是3个字符的长度 超出的部分将不显示
  • 《疯狂Java讲义》读书笔记(三):面向对象(下)

    第六章 面向对象 下 final修饰的变量 方法和类 系统不允许为final变量重新赋值 子类不允许覆盖父类的final方法 final类不允许派生 不可变类让系统更加安全 系统把一个 128 127 之间的整数自动装箱成Integer实例
  • 创建分支报错 Not a valid object name: ‘master‘.

    原因 库是空的 还没有真实master分支 要创建一个文件 然后commit之后才会真正建立master分支 此时才可以建立其它分支 解决步骤 touch README md git add README md git commit m f
  • R语言设置或查询图形参数par函数

    par可用于设置或查询图形参数 图形参数非常 大多数可以在作图函数中设置 本文列举最常见的应用 1 设置图像布局 1 设置图像布局 par mfcol c 1 2 c nr nc 一行两列 par mfrow c 2 1 两行行一列 2 图
  • 达观数据研发“曹植”大语言模型,致力于国产GPT模型

    在通用领域 以ChatGPT为代表的生成式大规模语言模型展现出卓越的知识学习和文字创作能力 受到国内外的广泛关注 垂直领域的GPT大模型同样拥有广阔的应用前景 达观基于多年文本智能技术积累和垂直领域场景业务经验 正在积极探索大语言模型LLM
  • redhat linux7版本重置密码教程

    对于redhat linux7版本的初学者来说 重置密码是必然会提到的 重置密码不仅可以解决你忘记密码的烦恼 更重要的是在rhce的考试的时候派上用场 因为考试的系统密码是靠你自己重置的 操作环境 VMware pro redhat lin
  • 修改Mysql数据库的用户名

    修改数据库用户名 首先安装过MySQL后 点击windows 找到MySQL 5 7 Command Line Client 点击运行 然后输入密码进入数据库 登录数据库后 然后输入一条下面的语句 select user from mysq
  • 编写ros2与webots进行联合仿真的代码,用Python写

    在写ROS2与Webots的联合仿真代码时 您可以使用Python作为编程语言 下面是一些提示 以帮助您开始编写代码 安装ROS2和Webots 您需要安装ROS2和Webots 并确保它们能够正常运行 创建ROS2工作空间 使用ROS2
  • L - Candy Machine

    SDUT 2022 Spring Team Contest for 21 12 Virtual Judge JB loves candy very much One day he finds a candy machine with NN
  • SQLException之驱动版本不匹配

    java sql SQLException Unknown initial character set index 255 received from server Initial client character set can be f
  • docker安装fastdfs

    一 准备docker环境 二 搜索fastdfs镜像 三 拉取镜像 docker pull delron fastdfs 选取delron fastdfs镜像的原因是包含了nginx不用自己安装nginx转发 也可以选择qbanxiaoli
  • c++ this指针

    this指针是c 中的一个关键字 它在类中被自动隐藏了起来 this指针指向当前对象并且只能用在类的内部使用 通过this指针我们可以访问类中的所有成员 public protect private class A public void
  • IDEA过期重置

    过期重置 https blog csdn net zzztimes article details 117550423
  • win10电脑发现不了华为share_huaweishare打开 电脑找不到手机

    本帖最后由 lang dine 于 2020 1 26 22 37 编辑 我的笔记本不是华为笔记本其他的网络设备都能搜索到 唯独huawei手机搜索不到 无法被搜到应该是huawei share的问题 这个问题还能顺延出两个故障 win10
  • 方波参考测试信号PI控制调试

    要调试方波参考测试信号的PI控制 可以按照以下步骤进行操作 确保系统已经正确连接 并且您已经设置了方波参考测试信号的频率和幅值 配置PI控制器 根据您的控制系统要求 选择适当的PI控制器参数 例如比例增益 Kp 和积分时间 Ki 这些参数可
  • c++虚函数和纯虚函数的区别

    关于虚函数的定义是 被virtual关键字修饰的成员函数 关于纯虚函数的定义是 是一种特殊的虚函数 在许多情况下 在基类中不能对虚函数给出有意义的实现 把它声明为纯虚函数 它的实现留给该基类的派生类去做 这是是纯虚函数 虚函数的简单实例 定