位置: 编程技术 - 正文

c++基础语法:虚继承(c++ 虚数)

编辑:rootadmin

虚继承 的概念的提出主要是为了解决C++多继承的问题,举个最简单的例子:上面的 liger.op() ;会报错,会提示模糊的成员变量,因为tiger和lion中都包含父类animal的op()操作。此时内存中的oneliger对象布局从低到高是下面这样的:1、animal的成员变量

2、继承tiger的成员变量 //包括 op()

3、继承lion的成员变量 / /也包括op()

4、liger本身的成员变量

PS: 对象在内存中的布局首先是如果有虚函数的话就是虚表,虚表就是指向一个函数指针数组的指针,然后就是成员变量,如果是普通继承则首先是最根父类的成员变量,然后是次父类成员变量,依次而来最后是本身的成员变量[虚继承相反],成员函数被编译成全局函数不存储在对象空间内,需要调用成员函数的时候,通过类名找到相应的函数,然后将对象的this指针传给函数:比如这样的代码 CTest test; test.print(); 编译器在内部将转换为:(伪代码) CTest test; CTest_print( &test ); // CTest的print函数转换为:CTest_print( CTest* const this); 所以这就和普通函数调用差别不大了实际应该是函数找到对象,即根据this指针

为了解决 上面多继承的问题,所以c++中提出了虚继承的概念,虚继承就是在子类中只保留一份父类的拷贝,拿上面的类子来说,就是“如果有一份父类的拷贝的话就用父类的拷贝,如果没有就加入一份拷贝” :此时liger对象在内存中的布局就变成了:4、animal的成员变量

3、继承tiger的成员变量 //包括 op()

2、继承lion的成员变量 //已经包含一份拷贝,所以 已经不包括op()

1、liger本身的成员变量

这样内存中就只有一份animal对象的拷贝,所以就不会存在模糊的问题;

推荐整理分享c++基础语法:虚继承(c++ 虚数),希望有所帮助,仅作参考,欢迎阅读内容。

c++基础语法:虚继承(c++ 虚数)

文章相关热门搜索词:c++虚函数详解,c++虚函数详解,c++虚函数菜鸟教程,c++虚函数作用及底层原理,c++虚方法的作用,c++虚函数菜鸟教程,c++虚函数菜鸟教程,c++虚函数菜鸟教程,内容如对您有帮助,希望把文章链接给更多的朋友!

Sqlserver 表类型和表变量介绍 表类型可以用在存储过程中,用于批量增加表类型定义:CREATETYPEdbo.SubCardTableastable([SC_ID][varchar](),[ZhuKaInfo_ID][varchar](),[Project_KeyName][varchar](),[SC_CardNum

SQL cursor用法实例 DECLARE@OldIdvarchar()DECLARE@CustomerIDvarchar()DECLAREMy_CursorCURSOR--定义游标FOR(selectCustomerID,oldidfromCustomerwhereArea='bj')--查出需要的集合放到游标中OPENMy_Cursor;--打

SQL中WHERE变量IS NULL条件导致全表扫描问题的解决方法 SET@SQL='SELECT*FROMCommentwith(nolock)WHERE1=1And(@ProjectIdsIsNullorProjectId=@ProjectIds)And(@ScoresisnullorScore=@Scores)'印象中记得,以前在做Oracle开发时,这种写法是会导致

标签: c++ 虚数

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

上一篇:把excel表格里的数据导入sql数据库的两种方法(把excel表格里的文字复制到word)

下一篇:Sqlserver 表类型和表变量介绍(sqlserver表类型)

  • 教育附加税税率多少?
  • 国库券利息收入计入利润总额吗
  • 党建经费的标准
  • 通用发票
  • 签劳务合同需要什么资质
  • 已上传的红字发票怎么打印
  • 无形资产资本化会计处理
  • 多借多贷的会计分录格式
  • 工程在建期间的会计分录
  • 商品房预售期一般多久
  • 报关单报关没做收入怎么办
  • 应收账款管理制度设计毕业设计
  • 付款方式公对公什么意思
  • 压覆矿产赔偿标准法律依据
  • 民办非企业收入会计分录
  • 车辆固定资产清理
  • 转让金融资产的税率
  • 个人借款到期未还诉讼时效
  • 增值税专用发票有效期是多长时间
  • 做天猫合理避税吗
  • 建筑业增值税普通发票可以抵扣吗
  • 装修费属于劳务费吗
  • 营改增后可以抵扣的范围
  • 生产企业办理出口退税时要提供发票吗
  • 企业汇算清缴前的票可以入账吗
  • 多交的增税怎么做账
  • 客户付货款给我们公司备注往来结算款
  • 工程施工直接费用包括哪些
  • 虚开增值税专用发票案例
  • 资产损失税前扣除
  • 库存商品的核算方法
  • 海关增值税当月可以抵扣吗
  • 笔记本低电量提示
  • win7如何设置高级网卡功能适合玩网络游戏
  • 实际利率是r还是i
  • 我想设置应用
  • 计提本月应交的所得税费用
  • 最大光圈相机
  • 财务比率分析的主要内容
  • 房抵债权
  • 待提出票据交换及转汇款怎么做账
  • 深度学习模型部署综述(ONNX/NCNN/OpenVINO/TensorRT)
  • 《走进新时代》专栏
  • Yii2针对游客、用户防范规则和限制的解决方法分析
  • 建筑业发票范围
  • 公司缴个人所得税吗
  • 建筑劳务税率是13还是6
  • php视频加水印
  • 出租车发票可以改时间吗
  • mysql时间格式转换函数
  • 财政补贴收入要交增值税税率
  • 个人所得税汇算年收入不超过12万
  • 以汽车投资作为投资项目
  • 用于集体福利的进项税额怎么处理
  • 月末如何计提增值税附加及增值税
  • 结转未交增值税为什么是零
  • 其他应付款转应付账款分录
  • 进项税转出税额
  • 税票是什么意思
  • 银行结算卡年费多少
  • 农产品进项税额会计分录
  • mysql安全性控制语句
  • sqlserver聚集索引和非聚集索引会不会改变原Id
  • mysql允许字段为空
  • mysql连接数 是针对db还是服务器
  • crypt什么文件
  • sbdrvdet.exe - sbdrvdet是什么进程 有什么用
  • linuxcoll
  • Unity3D游戏开发培训课程大纲
  • shell 字符串trim
  • 使用jquery的步骤
  • inline-block
  • linux shell脚本攻略(第3版)
  • 传智播客在线课程
  • python pil gif
  • javascript如何学
  • 详解js跨域原理是什么
  • 重庆市电子发票样式
  • 饮料开专票几个点
  • 专用发票收款人可以盖私章吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设