位置: IT常识 - 正文

深入理解 virtual 关键字(深入理解linux内核)

编辑:rootadmin
为什么会写这篇文章?主要是因为项目中的代码大量使用了带virtual关键字的类,想通过本文浅谈一下。virtual并没有什么超能力可以化腐朽为神奇,它有其存在的理由,但滥用它是一种非常不可取的错误行为。本文将带你一步一步了解virtual机制,为你揭开virtual的神秘面纱。 ...

推荐整理分享深入理解 virtual 关键字(深入理解linux内核),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:深入理解中国式现代化心得体会,深入理解中国式现代化论文,深入理解计算机系统,深入理解中国式现代化,深入理解计算机系统 第三版 pdf,深入理解java虚拟机,深入理解计算机系统,深入理解计算机系统 第三版 pdf,内容如对您有帮助,希望把文章链接给更多的朋友!

深入理解 virtual 关键字(深入理解linux内核)

引言

为什么会写这篇文章?主要是因为项目中的代码大量使用了带virtual关键字的类,想通过本文浅谈一下。virtual并没有什么超能力可以化腐朽为神奇,它有其存在的理由,但滥用它是一种非常不可取的错误行为。本文将带你一步一步了解virtual机制,为你揭开virtual的神秘面纱。

为什么需要virtual

假设我们正在进行一个公共图形化库的设计实现,其中涉及2d和3d坐标点的打印,设计出Point2d和Point3d的实现如下:

#include <stdio.h>class Point2d {public: Point2d(int x = 0, int y = 0): _x(x), _y(y) {} void print() const { printf("Point2d(%d, %d)\n", _x, _y); }protected: int _x; int _y;};class Point3d : public Point2d {public: Point3d(int x = 0, int y = 0, int z = 0):Point2d(x, y), _z(z) {} void print() const { printf("Point3d(%d, %d, %d)\n", _x, _y, _z); }protected: int _z;};int main() { Point2d point2d; Point3d point3d; point2d.print(); //outputs: Point2d(0, 0) point3d.print(); //outputs: Point3d(0, 0, 0) return 0;}

完美,一切都符合预期。既然如此,我们为什么需要virtual?让我们提个新需求:封装一个坐标点打印接口,输入是坐标点实例,输出是坐标点的值。很快,我们实现了代码:

void print(const Point2d &point) { point.print();}int main() { Point2d point2d; Point3d point3d; print(point2d); //outputs: Point2d(0, 0) print(point3d); //outputs: Point2d(0, 0) return 0;}

问题来了,当我们传入3d坐标点实例时,我们的期望是打印3d坐标点的值,而实际只能打印2d坐标点的值。现在的程序分不清坐标点是2d还是3d,为了让程序变得更聪明,需要对症下药,而virtual正是该症的药方。只需要更新Point2d接口print的

本文链接地址:https://www.jiuchutong.com/zhishi/309265.html 转载请保留说明!

上一篇:帝国CMS二次开发基本问题有哪些(帝国cms源码)

下一篇:python能读取tsv吗(python读取text)

  • 小米手机怎么修改应用图标(小米手机怎么修改锁屏密码)

    小米手机怎么修改应用图标(小米手机怎么修改锁屏密码)

  • 拼多多怎么一起下单多件商品(拼多多怎么一起付款多个订单)

    拼多多怎么一起下单多件商品(拼多多怎么一起付款多个订单)

  • 红米note11pro是什么指纹

    红米note11pro是什么指纹

  • 小米手机截屏快捷键(小米手机截屏快捷方式在哪)

    小米手机截屏快捷键(小米手机截屏快捷方式在哪)

  • 怎样解除小米账号激活(怎样解除小米账户绑定手机)

    怎样解除小米账号激活(怎样解除小米账户绑定手机)

  • 华为手机运营商设置更新在哪(华为手机运营商客服电话)

    华为手机运营商设置更新在哪(华为手机运营商客服电话)

  • 手机卡变成空号还可以恢复吗(手机卡变成空号后缴费会恢复吗)

    手机卡变成空号还可以恢复吗(手机卡变成空号后缴费会恢复吗)

  • 华为nova7pro有指纹解锁吗(华为nova7pro有指示灯吗)

    华为nova7pro有指纹解锁吗(华为nova7pro有指示灯吗)

  • 充电宝可以边充电边充手机吗(充电宝可以边充电边玩手机吗)

    充电宝可以边充电边充手机吗(充电宝可以边充电边玩手机吗)

  • 手机卡补卡要回本地吗(手机卡补卡回来不想要了,可以注销吗)

    手机卡补卡要回本地吗(手机卡补卡回来不想要了,可以注销吗)

  • 抖音bgm怎么找(抖音bgm怎么找原曲)

    抖音bgm怎么找(抖音bgm怎么找原曲)

  • 苹果充电暂缓80%以上什么意思(苹果暂缓充电到80)

    苹果充电暂缓80%以上什么意思(苹果暂缓充电到80)

  • 抖音永久封禁还能拿回来吗(抖音永久封禁还有机会解封吗)

    抖音永久封禁还能拿回来吗(抖音永久封禁还有机会解封吗)

  • iphone进水声音变沙哑(苹果进水声音变了)

    iphone进水声音变沙哑(苹果进水声音变了)

  • 微信的记录可以同步到另一个手机上吗(微信的记录可以转到新手机吗)

    微信的记录可以同步到另一个手机上吗(微信的记录可以转到新手机吗)

  • 抖音突然封禁为什么(抖音突然封禁怎么办)

    抖音突然封禁为什么(抖音突然封禁怎么办)

  • vivos5支持nfc吗(vivos5支持无线充吗)

    vivos5支持nfc吗(vivos5支持无线充吗)

  • 5g升级包什么意思(5g升级包是什么)

    5g升级包什么意思(5g升级包是什么)

  • x27的黑名单在哪里(x27怎么设置把黑名单里的人弄出来)

    x27的黑名单在哪里(x27怎么设置把黑名单里的人弄出来)

  • word文档怎么加入密码(word文档怎么加一页)

    word文档怎么加入密码(word文档怎么加一页)

  • ipad air和mini区别(ipad mini和ipad air区别)

    ipad air和mini区别(ipad mini和ipad air区别)

  • 苹果x没有指纹怎么支付(苹果X没有指纹吗)

    苹果x没有指纹怎么支付(苹果X没有指纹吗)

  • opporenoz怎么关机(opporeno2怎样关机)

    opporenoz怎么关机(opporeno2怎样关机)

  • 5g标准是哪个公司定的(5g标准是谁的)

    5g标准是哪个公司定的(5g标准是谁的)

  • 华为手机如何关闭通知栏推送消息(华为手机如何关闭负一屏)

    华为手机如何关闭通知栏推送消息(华为手机如何关闭负一屏)

  • 利润分配未分配利润和未分配利润的区别
  • 资产总额的季度怎么算
  • 银行利息支出税前扣除标准
  • 个人劳务所得税税率表最新2022
  • 行政单位资产核算
  • 个人转让不动产给个人独资企业
  • 购买虚开增票怎么处理?
  • 限制性股票科目
  • 购买汽车怎么抵扣增值税
  • 开错的红字发票申请单上传了怎么撤销?
  • 开增值税专用发票需要合同吗
  • 企业所得税减半征收计算公式
  • 补发工资如何申请
  • 内部收益率的计算步骤有
  • 房产转让的房产税怎么算
  • 未分配50g
  • 研发人员的工会经费计入研发费用吗
  • 打印企业银行流水需要密码吗
  • 货到付款一般付多少运费
  • php排队系统
  • win10更新补丁卸载不了
  • Win10 Build 21364 预览版正式更新(附更新内容)
  • macbookair怎么设置屏幕
  • 怀特岛郡国旗
  • php的注释可以使用什么开头
  • 代理买卖证券款是经纪业务费用吗
  • wgcore.dll是什么文件夹
  • 安徽4岁男孩户口已解决
  • php imagecopymerge
  • 中小企业发展专项资金
  • 怎么缴销空白发票
  • thinkphp框架入门
  • 发票复核和收款人未填写
  • 微信小程序开发一个多少钱
  • 确认的政府补助利得可以确认为收入吗
  • typescript完全解读
  • 端午假期干什么
  • 一般人财务报表季报还是月报
  • 小微企业具体指
  • 小规模企业所得税优惠政策最新2022
  • 土地扣除项目金额
  • input和printf的区别
  • 海关进口增值税专用缴款书如何抵扣
  • 法人与财务负责人不应为同一人
  • 工会筹备金有优惠政策吗
  • 物业公司物业费税率是多少
  • 企业所得税季初和季末怎么算
  • 在职职工暖气费补助款
  • 应付账款属于外币货币性项目吗
  • 企业委托企业
  • 代销手续费怎么做账
  • 应收账款收不回来的情况说明
  • 进项税留底怎么处理
  • 白条入账会计处理
  • 收到返利怎么做会计分录
  • 赠送样品视同销售增值税该怎么做账务处理呢?
  • 用美元账户余额怎么用
  • 粗纤维测定仪价格
  • 预付账款属于资产项目吗
  • sql server不可用或不存在什么意思
  • windowsxp教程
  • 在linux系统中,用来存放系统所需要的配置文件和子目录
  • apache not found
  • winxp怎么设置启动项
  • Linux系统下以模块方式安装卸载文件系统
  • process32first 进程信息为空
  • winXP系统截图
  • linux安装yum命令步骤
  • win10添加功能在哪
  • win10系统如何创建新用户
  • jsonp的使用
  • jquery有什么功能
  • html网站首页
  • javascript如何绘制曲线
  • JavaScript中setMonth()方法的使用详解
  • python爬虫有道翻译
  • 最新专票税率几个档
  • 江西公积金提取代办
  • 交医保显示已申报怎么办
  • 怎样查询上一年的国税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设