位置: 编程技术 - 正文

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

  • 海运报文是什么意思
  • 单位收到已交个税的劳务发票还需要申报个税吗
  • 取得虚开普票怎样补增值税
  • 税控盘维护费发票普通发票
  • 甲方给的工程奖项有哪些
  • 公允价值下降属于资产吗
  • 加油票抬头开错可以更换吗
  • 加计抵减申报表填写说明
  • 劳务公司的暂估费是什么
  • 核销贷款收回会计分录
  • 对账状态未对账
  • 计提工资数大于实际支付数怎么办?
  • 离退休人员再任职的规定
  • 出口退税如何开发票
  • 车辆增值税抵扣多少点
  • 企业所得所得税税负
  • 蔬菜营销方案案例范文
  • 营业账簿印花税怎么算
  • 关于汽车配件的书
  • 融资租赁收到租金不确认收入
  • 精装房不同合同的区别
  • 个税累计预缴税额税率表是年还是月
  • 回购股票手续费会计分录
  • 企业所得税应纳税所得额不得扣除
  • 企业交纳房产税,土地使用税、车船使用税应借记( )账户
  • 小规模印花税怎么报
  • 账户禁用无法登录怎么办
  • 专项储备属于什么科目代码
  • 外贸企业国内运费可以抵扣吗
  • 细说php
  • 电脑上一键复制是哪个键
  • pavmail.exe - pavmail进程是什么文件 有什么用
  • php psr2
  • linux怎么打开makefile
  • Thinkphp+smarty+uploadify实现无刷新上传
  • mapbox wms
  • linux查看ssh服务开启
  • Yii2如何批量添加数据
  • vue clonedeep
  • 简易html代码
  • python字典删除键值对方法
  • 发票6个点怎么算收税点
  • mongodb exception: $concat only supports strings, not NumberInt32解决办法
  • 影响年度损益的金额怎么算
  • 个人所得税申报截止时间
  • 审核后的凭证
  • 财务费用利息收入是什么意思
  • 高新企业申报条件有哪些
  • 个税申报怎样作废
  • sql 判断字符串中是否包含数字
  • 固定资产卡片账是什么
  • 会计支付预付款怎么记账
  • 员工工伤申请流程
  • 其他人挂靠公司交社保会计处理怎么做?
  • 单位代扣代缴个人所得税凭证
  • 小企业会计准则2023电子版
  • 负债类科目分录
  • 年度损益调整的会计分录
  • 采购未取得发票怎么结转成本
  • 企业取得土地使用权会计处理
  • win10 mobile 预览10240
  • windows server 2008 硬盘格式
  • 主板不支持u盘装系统怎么办
  • win10 rs1是什么版本
  • grub4dos linux
  • kdeskcore.exe是什么
  • win10在哪里更改软件大小
  • linux如何用
  • opengl 3d engine
  • jquery 限制文件大小
  • 置顶在哪里
  • 查找第一个字符
  • js插件大全
  • jquery移动节点的方法
  • jq拖拽功能
  • shell脚本特性
  • python django orm
  • 自然人扣缴端初始密码
  • 一般纳税人简易征收会计分录
  • 广西南宁地税局电话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设