位置: 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)

  • 怎样利用QQ群推广网站?(怎样利用qq群推荐给别人)

    怎样利用QQ群推广网站?(怎样利用qq群推荐给别人)

  • 红米note11机身材质是什么(红米note11厚度)

    红米note11机身材质是什么(红米note11厚度)

  • 笔记本电脑怎么按f4(笔记本电脑怎么重装系统)

    笔记本电脑怎么按f4(笔记本电脑怎么重装系统)

  • ipad激活时一定要选取备份吗(ipad要怎么激活)

    ipad激活时一定要选取备份吗(ipad要怎么激活)

  • 发申请qq没反应(发申请qq没反应什么原因)

    发申请qq没反应(发申请qq没反应什么原因)

  • 970m和1050ti差距(970m跟1050ti)

    970m和1050ti差距(970m跟1050ti)

  • mate30pro拍照模糊(华为mate30pro照相机拍照屏幕模糊)

    mate30pro拍照模糊(华为mate30pro照相机拍照屏幕模糊)

  • 液晶显示器lcd的主要技术指标不包括(液晶显示屏与led显示屏的区别)

    液晶显示器lcd的主要技术指标不包括(液晶显示屏与led显示屏的区别)

  • 苹果xr手机相册突然没了怎么办(苹果xr手机相册怎么拼图)

    苹果xr手机相册突然没了怎么办(苹果xr手机相册怎么拼图)

  • 电脑黑屏的主要原因是什么(电脑黑屏了是什么意思)

    电脑黑屏的主要原因是什么(电脑黑屏了是什么意思)

  • 存储系统中的ram是指(存储器ram的内部原理)

    存储系统中的ram是指(存储器ram的内部原理)

  • iphonexr夜间耗电严重原因(xr夜间掉电)

    iphonexr夜间耗电严重原因(xr夜间掉电)

  • 发朋友圈如何显示全文(发朋友圈如何显示手机型号)

    发朋友圈如何显示全文(发朋友圈如何显示手机型号)

  • 移动光猫user默认密码(移动光猫user默认密码不对)

    移动光猫user默认密码(移动光猫user默认密码不对)

  • 怎样在手机上交医保(怎样在手机上交养老保险)

    怎样在手机上交医保(怎样在手机上交养老保险)

  • 二代耳机有线和无线的区别(二代耳机有线和有线区别)

    二代耳机有线和无线的区别(二代耳机有线和有线区别)

  • 华为手机如何导出照片(华为手机如何导入电脑照片到电脑)

    华为手机如何导出照片(华为手机如何导入电脑照片到电脑)

  • iphone11pro max尺寸(iphone11pro max尺寸多少厘米)

    iphone11pro max尺寸(iphone11pro max尺寸多少厘米)

  • 商家扫码花呗多久到账(商家扫码花呗多久到账户)

    商家扫码花呗多久到账(商家扫码花呗多久到账户)

  • 苹果无线耳机怎么开机(苹果无线耳机怎么看剩余电量)

    苹果无线耳机怎么开机(苹果无线耳机怎么看剩余电量)

  • vivo储存卡怎么放(vivo手机储存卡怎么拿出来)

    vivo储存卡怎么放(vivo手机储存卡怎么拿出来)

  • 小米9三个摄像头分别作用(小米9三个摄像头用法)

    小米9三个摄像头分别作用(小米9三个摄像头用法)

  • 【第十一届“泰迪杯”数据挖掘挑战赛】B题产品订单的数据分析与需求预测“解题思路“”以及“代码分享”

    【第十一届“泰迪杯”数据挖掘挑战赛】B题产品订单的数据分析与需求预测“解题思路“”以及“代码分享”

  • SAM - 分割一切图像【AI大模型】(分割sw)

    SAM - 分割一切图像【AI大模型】(分割sw)

  • CSDN接入AIGC辅助创作,对此你怎么看?

    CSDN接入AIGC辅助创作,对此你怎么看?

  • 个人所得税退税操作流程
  • 餐饮个体户如何开票
  • 视同销售的增值税怎么申报
  • 个人独资企业要交税吗
  • 盘盈的固定资产怎么做账务处理
  • 个人独资企业法人可以变更吗?
  • 医院财政资金免企业所得税吗
  • 保函费用是用来干什么的
  • 成本和费用的区别在于()
  • 社会保险申报表中工资总额累计金额是什么意思
  • 怎么开具红票
  • 融资租赁承租人和出租人的会计处理
  • 小企业发生销售折让的原因
  • 附加税结转的会计分录
  • 我们4月10日
  • 职工向公司借款计入什么科目
  • 对外出租设备
  • 增值税抵扣需要哪些附件
  • 增值税销售额怎么看
  • bios中英文对照表图新版
  • 苹果电脑的删除
  • 工程施工怎么结转到成本里
  • 贸易公司出口是什么意思
  • 收购子公司股权现金流
  • Linux系统中修改网络配置文件
  • pqtray.exe - pqtray 是什么进程 有什么用
  • 增值税发票选择确认平台注意事项
  • 利润增减幅度
  • 前后端交互用什么技术
  • 在高地陶恩山脉的滑雪旅行,奥地利巴德加斯坦 (© RooM the Agency/Alamy)
  • 两借两贷属于复合会计分录吗
  • 前端布局flex
  • 股权置换涉税问题
  • 工会经费和残保金的缴纳比例
  • 不用财务软件的公司要去吗
  • 增值税税收滞纳金哪里缴纳
  • 【GitHub Copilot X】基于GPT-4的全新智能编程助手
  • python单子
  • git t
  • 教育费附加免税需要计提吗?
  • 预收安装费的会计分录
  • 工会经费是应付职工薪酬的借方还是贷方
  • python中如何删除文件
  • 退税没有退的部分怎么做账
  • 小规模所得税怎么计算公式
  • 社保次月几号生效
  • 汽车维修费可以做差旅费吗
  • sqlserver英文发音
  • 利息收入的会计分录
  • 待抵扣进项税额和待认证进项税额的区别
  • 品种法分批法分步法的区别
  • 主营业务成本为什么属于损益类科目
  • 公司自己制造设备怎么办
  • 积分换购怎么做账
  • 进项税额属于什么会计科目
  • 法人代表可以兼任出纳吗
  • 关于发票丢失的处罚
  • 关于注册资本的最新规定
  • 商业资本金
  • 商品流通企业会计
  • 优化sql语句10种方法
  • iTunesHelper.exe是什么进程?iTunesHelper.exe系统错误怎么解决?
  • vmware_vmx.exe进程在哪里关
  • 支付宝安全控件可以卸载吗
  • mac怎么连接校园网wifi
  • linux 操作系统
  • linux 使用技巧
  • pc guide
  • win7账户不见了
  • linux中vi命令是什么意思
  • jquery获取表格一列的值
  • android开发范例实战宝典
  • windows安装包下载
  • 利用python中的运算符可以编程解决你身边的哪些问题
  • 电子税务局官网江西省
  • 西安税务稽查局举报中心
  • 苏州税务ukey客服电话
  • 教育培训机构都交哪些税
  • 政府征用土地社保补偿标准
  • 20万块手表交多少税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设