位置: 编程技术 - 正文

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

  • 小规模纳税人0税率发票
  • 实收资本印花税如何申报
  • 业务招待费税前扣除标准是
  • 如何查看发票是否被抵扣
  • 购入原材料结转采购成本的会计分录
  • 跨年度退货可以开红字发票吗
  • 行政事业单位会计制度
  • 国有独资企业交企业所得税规定
  • 资产负债表不平的原因有哪些
  • 外商投资企业是中国企业吗
  • 自产农产品免征增值税
  • 联营和合营的区别
  • 合作建房的土地出让金在土地增值税中可以加计扣除嘛
  • 投资办厂协议
  • 装修计入固定资产
  • 收到客户样衣定做款会计科目是什么?
  • 个体户缴纳个人经营所得税分录
  • 工伤保险费发票
  • 差额征税发票如何做分录
  • 利润借方余额表示盈利还是亏损
  • 水利建设专项收入怎么计算
  • 跨地区建筑安装企业个人所得税征收方式申请表
  • 本年利润年末怎么结转到利润分配
  • 创新券补贴可以算作高新收入吗?
  • 公司筹建期间借款怎么办
  • 工资可以一次性计提全年的吗
  • 增值税普通发票几个点
  • 本月销项大于进项
  • 免税企业进项怎么处理
  • 联营 保底
  • 股东借钱给公司怎么写借条
  • php 静态变量
  • 怎样跳过windows开机更新
  • jar启动指定启动类
  • 吃辣第二天长痘痘
  • 观景台俯视图
  • php面试题目100及最佳答案
  • 研发入库的产品销售出库怎样做账
  • 母子公司转让不动产 契税
  • 暂估入库会计
  • php call方法
  • 边际贡献总额什么意思
  • 报销替票的风险是什么
  • 期末存货材料成本差异
  • 增值税纳税申报实训报告
  • 国债利息收入要征税吗
  • 企业做账的流程图
  • 公司与公司的往来款计入什么科目
  • 内账需要哪些单据
  • 以房抵债会计分录怎么做
  • 银行汇票转入银行分录
  • 以他人名义投资该签订什么协议
  • 单位临时账户可以取现吗
  • 有没有月初发放当月工资的
  • vs2008如何使用
  • centos彻底删除文件命令
  • 在windows中创建用户的步骤
  • win8分盘怎么分
  • win8系统怎么远程电脑
  • virtualbox虚拟机菜单找不到了
  • mac z
  • win10 电脑
  • linux误删文件怎么办
  • searchnavversion.exe - searchnavversion是什么进程 作用是什么
  • c:windowssys:em32mtgyu.dll 内存分配访问无效的解决办法
  • 安装双系统之后win10进不去
  • mfc界面布局
  • javascript基于什么的语言
  • 代码的历史
  • js实现分页数据库数据
  • angular做app
  • node .js
  • js debounce实现
  • python如何用
  • input限制数字大小
  • js获取父窗口
  • 无锡医疗保险缴费比例
  • 税务总局绩效管理四大板块
  • 重庆市电子税务局电话
  • 注册一个信息咨询公司需要什么
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设