位置: 编程技术 - 正文

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

  • 什么是增值税留底退税
  • 税务师继续教育怎么做
  • 什么是代扣代缴申报
  • 货币基金分红交什么税
  • 退税会计科目怎么做账
  • 电子发票冲红后算金额吗?
  • 高新技术企业发展现状
  • 工程项目结算方式有哪几种
  • 项目清算组
  • 销售废旧物品的账务处理
  • 税金及附加多计提了汇算清缴怎么办
  • 现金存入银行会计摘要怎么写
  • 交易性金融资产的交易费用计入哪里
  • 团体意外伤害险是保的什么
  • 清包工和甲供工区别在哪
  • 企业所得税的账载金额和实际发生额
  • 公司招聘费属于什么科目
  • 通行费进项税额抵扣金额填在哪里?
  • 合同银行账户与开票信息不一致会计如何处理
  • 补提以前年度摊销
  • 金蝶k3固定资产反结账
  • 营业收入销售收入计算公式
  • 员工离职补偿金可以税前扣除吗
  • 云下载并重新安装
  • 网页打不开是什么
  • 广告补贴申请报告
  • php写html
  • linux系统用法
  • php fwrite函数
  • 合并报表抵消分录未分配利润怎么算
  • PHP:imagesetbrush()的用法_GD库图像处理函数
  • 土地增值税清算管理规程
  • FUXA个人学习总结(一)
  • 差旅费车票抵扣的相关规定
  • vue封装组建
  • php+ mysql教程
  • video.js教程
  • 万能的python
  • _ html
  • 杀疯了出自哪里
  • 不能抵扣的进项税转出账务处理
  • sql中drop的用法
  • 租集体土地建厂合法吗
  • 租金的支付期限是多久
  • 国税办税人员怎么解绑
  • 增值税和个人所得税怎么算
  • 固定资产清理如何做账
  • 小规模增值税纳税人税率
  • 小规模纳税人税额怎么算
  • 生产成本月末结转后有余额吗
  • 现金流量表的编制公式 计算公式
  • 业务招待费汇算清缴账务处理
  • 收到的承兑怎么转给别人
  • 收到赠送的样品附件
  • 扣税时账上没钱怎么办
  • 当月无销售要计提工资吗
  • 政府补贴递延收益的摊销时间
  • 待处理财产损溢借贷反向
  • sqlserver批处理语句
  • mysqlsum查询慢
  • centos 6.5下 mysql-community-server. 5.7.18-1.el6安装
  • cmd命令行操作
  • 下载win10 32位
  • windows 08
  • bios如何进去
  • CentOS安装scp命令详解
  • lowleverfatal error怎么解决
  • win8怎么添加wifi
  • cocos2d开发app
  • get请求的url
  • 跑酷角色左右移动怎么弄
  • Unity的Attribute(特性)还算多吧
  • 网络很强大
  • 各类扩展名
  • android自学
  • jquery.qtip提示信息插件用法简单实例
  • python系统代码
  • 缴款单号怎么交学费
  • 电子税务局开电子发票如何更换开票人
  • 公司收购农民的农产品能贴我公司标签吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设