位置: 编程技术 - 正文

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

  • 收益性支出和资产的区别
  • 资产负债率高说明偿债能力怎么样
  • 红冲以前年度的费用怎么做账
  • 发票勾选是否为转内销凭证是什么意思
  • 满减 优惠券
  • 取得预收租金应如何申报缴税
  • 已报关的货物可以改单价价吗
  • 金税设备中有上税吗
  • 企业注销建造师流程
  • 专用设备抵免企业所得税目录
  • 岗位津贴一定要发吗
  • 劳务公司开的3%专用发票能抵扣吗
  • 关联企业股份
  • 所得税季度申报表营业成本怎么填
  • 水资源税计入会计科目
  • 采购商品产生的费用有哪些
  • 处置的固定资产
  • 工程发票预交税金规定
  • 生物制品税率3%税率什么时候开始的
  • 苹果中国区副总裁
  • 产品 研发
  • php smarty
  • 至极加速
  • deepin声音
  • 清算期间会计科目
  • $(window).resize
  • 在php中,什么函数能将数组转化为字符串
  • 华为2022年资产负债表数据
  • 公司缴纳残保金怎么做账
  • 增值税发票洗烂怎么办
  • javascript网页自动化
  • 如何用css设置图片大小
  • 如何让别人访问自己的qq空间
  • 待抵扣进项税额和进项税额的区别
  • php5.2漏洞
  • python 文件判断
  • 个人生产经营所得范围
  • 申报的财务报表在哪里查询
  • 个体工商户税收起征点是多少?
  • 民办非企业收到政府拨款分录
  • 会计上视同销售的八种情况是哪些?
  • 小规模纳税人所得税怎么计算
  • 在工资模块中进行各工资类别间的汇总
  • 国债逆回购收益什么时候到账
  • 小额贷款涉及的法律
  • 股权转让需要哪些手续及流程
  • 工会经费的开支必须取得发票么
  • 银行打对公回单
  • 企业利润的构成内容
  • 数据库sql分组
  • sql数据库还原方法
  • 怎么用u盘装xp系统教程
  • win8创建系统映像
  • Winpack.exe - Winpack是什么进程
  • 系统占用90g怎么删
  • windows与linux的关系
  • win10rs2是哪个版本
  • 升级win10之后东西不见了
  • 删除kernel
  • mom.exe是什么进程
  • win10鼠标怎么换
  • windows8介绍
  • opengl画点
  • bootstrap响应式工具使用详解
  • pycharm中文教程
  • python如何用
  • jquery插件使用教程
  • 玩转cmd命令
  • android activity回调函数
  • 编写shell脚本,实现备份文件:每天18:00归档
  • javascript高级语言
  • math在java
  • BootStrap glyphicon图标无法显示的解决方法
  • 出租车票真伪查询官网
  • 工会经费申报表在哪里查询
  • 发票可以异地领用吗
  • 广东省地方税务局历任局长
  • 北京市房产查询官网
  • 地税申报网上操作步骤
  • 2018年3月增值税申报期限
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设