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

  • 12306临时身份证二维码如何使用(12306临时身份证申请要多久)

    12306临时身份证二维码如何使用(12306临时身份证申请要多久)

  • 华为Mate X2支持哪些NFC模式

    华为Mate X2支持哪些NFC模式

  • 荣耀30pro有来电闪光灯功能吗(荣耀30pro怎么设置来电秀)

    荣耀30pro有来电闪光灯功能吗(荣耀30pro怎么设置来电秀)

  • opporeno4pro屏幕刷新率是多少(opporeno4pro刷机包)

    opporeno4pro屏幕刷新率是多少(opporeno4pro刷机包)

  • 微信消息发不出去有感叹号(微信消息发不出去怎么回事)

    微信消息发不出去有感叹号(微信消息发不出去怎么回事)

  • 惠普227fdw硒鼓型号(惠普227fdw硒鼓加粉清零)

    惠普227fdw硒鼓型号(惠普227fdw硒鼓加粉清零)

  • 华为隐私双系统用久了会卡吗(华为双系统隐藏入口)

    华为隐私双系统用久了会卡吗(华为双系统隐藏入口)

  • 拼多多的拼小圈怎么不让别人看(拼多多的拼小圈怎么删除好友)

    拼多多的拼小圈怎么不让别人看(拼多多的拼小圈怎么删除好友)

  • 苹果蓝牙耳机能连电脑吗(苹果蓝牙耳机能连安卓手机吗)

    苹果蓝牙耳机能连电脑吗(苹果蓝牙耳机能连安卓手机吗)

  • 电脑图标变大了怎么办(电脑图标变大了怎么恢复正常)

    电脑图标变大了怎么办(电脑图标变大了怎么恢复正常)

  • itunes u可以卸载吗(itunes可以删除软件吗)

    itunes u可以卸载吗(itunes可以删除软件吗)

  • 苹果手机软件更新在哪里(苹果手机软件更新忘记密码怎么办)

    苹果手机软件更新在哪里(苹果手机软件更新忘记密码怎么办)

  • 华为9x怎么设置人脸识别(华为9x怎么设置来电铃声)

    华为9x怎么设置人脸识别(华为9x怎么设置来电铃声)

  • word怎么把数字上标(word怎么把数字放在右上角)

    word怎么把数字上标(word怎么把数字放在右上角)

  • oppoa1有呼吸灯吗(oppoa91手机有没有呼吸灯)

    oppoa1有呼吸灯吗(oppoa91手机有没有呼吸灯)

  • 抖音长腿特效在哪里找到(抖音长腿特效在哪找)

    抖音长腿特效在哪里找到(抖音长腿特效在哪找)

  • 双卡设置在哪里(苹果手机双卡设置在哪里)

    双卡设置在哪里(苹果手机双卡设置在哪里)

  • word的模板在哪儿(word模板在哪个选项卡)

    word的模板在哪儿(word模板在哪个选项卡)

  • ps污点修复工具快捷键(ps污点修复工具没反应)

    ps污点修复工具快捷键(ps污点修复工具没反应)

  • 小米arcore怎么用(小米手机ar如何使用)

    小米arcore怎么用(小米手机ar如何使用)

  • 路由器老断网需要重启(路由器断网是什么情况)

    路由器老断网需要重启(路由器断网是什么情况)

  • win10下载软件被阻止无法安装怎么办(win10下载软件被阻止安装怎么办)

    win10下载软件被阻止无法安装怎么办(win10下载软件被阻止安装怎么办)

  • 2023高频前端面试题(持续更新 含答案)(2021高频前端面试题汇总)

    2023高频前端面试题(持续更新 含答案)(2021高频前端面试题汇总)

  • 委托加工物资增值税纳税义务发生时间
  • 什么情况下不能做近视激光手术
  • 申报个税时怎么获取个税专项附加扣除
  • 应交税费明细科目怎么记账
  • 租房抵扣个税计算公式
  • 申报无票收入次月红冲有没有风险
  • 固定资产怎么进行折旧处理
  • 所得税报表的营业成本包括管理费用吗
  • 软件企业两免三减半备案条件
  • 工会经费返还怎么使用
  • 冲减存货的会计分录
  • 留抵税额抵减欠税文件
  • 车辆购置税免税申报如何操作
  • 在建工程过程中取得收入怎么入账
  • 产权交易所怎么赚钱
  • 外商投资企业清算审计报告
  • 银行取现怎么取
  • 房地产企业的土地使用税起始时间
  • 卷式增值税发票校验码怎么查
  • 营改增个体工商户优惠政策
  • 防伪税控技术维护费是进项还是销项
  • 6位开票代码是几位数
  • 公司租车费用会计分录
  • 残疾人保障金什么时候发放
  • 个人可以代公司缴税吗
  • 税控技术服务费需要交印花税吗
  • 长期待摊费用多少钱
  • 增值税纳税申报实训心得体会
  • 1697509246
  • 建筑施工企业在12个月内连续发生
  • 一家公司各项费用支出
  • php session_id
  • 承包合同包含的内容
  • php的超级全局变量
  • 房地产企业增值税扣除土地成本
  • php调用图片
  • 瓦普拉克
  • 浏览器集成什么意思
  • 销售金额较大多少算较大
  • java中ne
  • sessionn
  • 电赛2021题目
  • php返回上一级
  • 解决什么情况
  • 人力资源企业税收风险
  • 资产负债表中应交税费为负数是什么意思
  • 解决胃胀气最快方法
  • 外贸客户付款方式
  • 企业所得税该什么科目
  • 工程材料费发票没拿到是否能预提费用?
  • 主营业务收入净额在利润表里怎么看
  • 实收资本没有实缴,财务报表里面怎么写
  • 企业出售自用车辆的会计处理
  • 装潢装修费用属于营改增
  • 信用减值损失在利润表怎么填列
  • 库存商品核算
  • 申请开立基本存款账户时,银行应按照
  • 城镇土地税需要计税吗
  • 缴纳工会筹备金应该记什么科目
  • 销售方开具的红字专票怎么入账
  • 没有发票的费用怎么做凭证
  • Mysql 5.7.19 winx64 ZIP Archive 安装及使用过程问题小结
  • xp系统登录界面登录管理员账号
  • apt-key
  • linux中的ssh命令
  • centos7设置bond
  • w10系统屏幕一直在闪
  • kill命令用法
  • win7 svchost
  • unity中
  • bat 参数个数
  • 抽奖小程序模板
  • python面向什么编程
  • python的设置
  • javascript基础书
  • python安装第三方模块
  • 安卓的所有权
  • 江西省国家税务局李德平
  • 苏州税务中心
  • 江苏灵活就业医保交多少年
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设