位置: 编程技术 - 正文

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

  • 公转私做账麻烦吗
  • 什么叫直接税?直接税有哪些?
  • 个人独资企业和个体工商户的税收区别
  • 负债与所有者权益比率
  • 企业所得税季报营业收入,营业成本怎么填
  • 为什么生产车间地板是绿色的
  • 拖欠安装费
  • 吸收合并的税务处理增值税风险
  • 哪些发票可以冲红票
  • 建筑企业劳务费怎么做账
  • 高新企业季度企业所得税预征税率
  • 什么时候需要计提税金及附加
  • 报企业所得税的利润总额怎么填
  • 通用机打发票上面为什么不体现税率
  • 应收款的周转天数
  • 免抵退系统应调整免抵退额吗?
  • 来料加工原材料计入什么科目
  • 怎么把公司账户的钱转到个人账号
  • 在win7中怎么安转只兼容win10的软件
  • 暂估应付账款是什么科目
  • 公司聚餐计入什么会计科目
  • 计提房租费
  • linux环境什么意思
  • windows预览版dev和beta
  • php+redis
  • 劳务报酬纳税计算器
  • 桌面图标归纳
  • 行政单位预付款已收到货物无发票
  • 强烈的建议
  • 支付第三方劳务派遣费用如何做账
  • 应付账款挂账会计分录
  • 出口免退增值税计算公式
  • 小规模与一般纳税人做账区别
  • vue 使用js
  • 个人出租车辆交税吗
  • vuecli打包项目
  • PHP面向对象程序设计
  • h5与小程序交互
  • 网络分割算法
  • vue中的icon
  • convert convert
  • 审图费谁出
  • 固定资产账面净值和账面价值的区别
  • mysql常用命令汇总
  • 受让应收账款的账务处理
  • mysql的左右连接
  • 收到银行回单如何打印
  • 建筑业有收入没有成本
  • 坏账收不回来如何做分录
  • 交通费用报销明细表
  • 预付账款的会计处理
  • 无偿使用期限
  • 固定资产折旧方法不考虑净残值
  • 代开专票是指?
  • 公司购入二手车没有发票怎么入账
  • 银行卡账户年费
  • 应交税费应交增值税已交税金怎么用
  • 工程担保属于什么
  • 新成立的公司都是小微企业吗
  • sqlserver 储存过程
  • mysql exists与not exists实例详解
  • windows2003企业版sp2密钥
  • Win10系统如何开启全部权限
  • auepuf.exe是什么进程
  • mac远程桌面mac
  • fs是什么文件夹
  • webpack中CommonsChunkPlugin详细教程(小结)
  • ExtJS4中的requires使用方法示例介绍
  • nodejs formidable
  • prototype用法
  • js 阻止触发某个事件
  • js在对象的方法中访问属性name的语法为
  • bash shell 语法
  • 基于jquery的移动端ui框架
  • unity ugui教程
  • javascript可以做动态网页吗
  • 安卓中的菜单
  • jquery遍历radio并选中
  • 印花税在哪里查询
  • 增值税专用发票上传是什么意思
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设