位置: 编程技术 - 正文

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表类型)

  • 什么是税收收入效应
  • 厂区地面硬化属于土建还是市政
  • 减免税额和抵免的区别
  • 进项税抵扣销项税怎么做账
  • 房地产企业预收款预缴增值税
  • 典当业销售的死当物品是否交增值税
  • 退休人员返聘工资按工资薪金还是劳务报酬
  • 企业怎么申请无运输工具承运资质
  • 货物正常报损的分录
  • 律师要钱吗
  • 如何查询增值税申报表
  • 一般纳税人提供服务税率
  • 车辆租赁费用标准
  • 金税盘没票了
  • 金税盘里的增值税怎么算
  • 出口退税综合服务平台电话
  • 集团企业内各个部门职责
  • 加工费计入什么费用
  • 进项税额转出再转入
  • 如何理解总分机的概念
  • 办理转移登记需要什么资料
  • 企业购入用于捐赠的物品
  • linux强制删除文件夹
  • 核定征收印花税计算公式
  • php与mysql基础教程
  • 年终奖税务筹划合法吗
  • 虚假财务报表的案例
  • npm info: node: --openssl-legacy-provider is not allowed in NODE_OPTIONS
  • 领用包装物会计科目
  • yolov5解析
  • 购买加油卡如何开发票
  • 生产企业外销收入账务处理
  • 创业投资企业可以签订代持股协议吗合法吗
  • 财务的几张报表
  • 基于Perclos&改进YOLOv7的疲劳驾驶DMS检测系统(源码&教程)
  • 待转销销项税额是什么
  • phpcms v9官网
  • 坏账的确认条件税务会查吗
  • ps调色的作用
  • phpcms怎么修改模板风格
  • 电子口岸无纸化报关
  • 个体工商户季度超过9万怎么交税
  • 税务相关政策的解读
  • 工会经费税务代收是什么意思
  • 认缴出资额就是营业执照上的注册资金
  • 交易性金融资产入账价值怎么计算
  • 资产负债表的其他应收款怎么算出来的
  • 小规模结转成本怎么计算
  • 商贸企业 税收 政策规定
  • 取得虚开增值税专用发票罪量刑标准
  • 湖南残保金优惠政策
  • 国债利息收入企业所得税调增
  • 外商投资企业清算资金汇出环节,银行
  • 企业会计的应用指南
  • 延期支票可以撤回吗
  • 直接费用的定义
  • Navicat for MySQL(mysql图形化管理工具)是什么?
  • MySQL 4.1/5.0/5.1/5.5/5.6各版本的主要区别整理
  • 迅速修复系统漏洞的方法
  • ubuntu英文系统安装中文输入法
  • macxi
  • cpqinet.exe是什么进程 安全吗 cpqinet进程安全性评估
  • linux clk
  • win10系统环境设置
  • win7隐藏文件怎么调出来
  • 'GL_COMBINE_ARB' : undeclared 'GL_RGB_SCALE_ARB' : undeclared 问题
  • 超大安卓游戏
  • 编程语言javascript
  • bat弹窗
  • android iframe
  • android之handler
  • javascript学习指南
  • js有几种模式
  • 用javascript写简单网页
  • 小规模纳税人收到增值税专用发票怎么办
  • 怎么查询购置税交了没有
  • 河南省土地使用税税率
  • 税务稽查审理的基本原则
  • 江苏电子口岸卡邮寄大概需要多久
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设