位置: 编程技术 - 正文

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

  • 小规模纳税人和一般纳税人哪个划算
  • 申报所得税季初资产总额怎么填?
  • 代开专用发票的企业如何享受小微免税优惠
  • 2021年旅游免费
  • 怎么控制成本费用餐厅
  • 营改增对企业的影响案例
  • 金税盘?
  • 开发票六位代码
  • 出租车库收入是否需要计算缴纳土地增值税
  • 报税遇节假日延长吗?
  • 折扣折让的账务处理
  • 补提以前年度无形资产摊销税务处理
  • 培训的餐费入什么科目
  • 专业服务业政策
  • 小微企业需要税务登记吗
  • 收到的出口退税款需要并入利润总额吗
  • 腾讯手游助手卡顿严重
  • 共管帐户的特点是什么
  • 国税的个税手续怎么办理
  • rtc resume
  • 筹建期银行手续费
  • 财政补助收入核算内容
  • 制药企业成本核算流程
  • 多对账工作的主要内容
  • vue的watch监听
  • 现金流量表相关题目
  • 销售提成属于什么费用
  • 商业银行流动性风险监管指标
  • PHP中使用什么关键字声明变量的作用域为全局
  • 车间装修预算表
  • 购买增值税税控系统如何抵扣增值税
  • 本期收入及免税收入怎么填
  • yolo训练教程
  • 港口公司属于什么性质的单位
  • 资产处置费用是资产类会计科目吗
  • 哪些发票可以抵企业所得税
  • python字符串如何换行
  • mysql 小时差
  • sql server如何操作
  • 短期借款属于经营活动还是筹资活动
  • mysql时间格式转换函数
  • 教育培训行业成功案例
  • 非金融企业之间的借款合同要交印花税吗
  • 工程管理服务属于哪个行业
  • 其他应付款科目贷方登记发生的各种应付
  • 企业工会经费的会计分录
  • 固定资产资本化后续支出
  • 电话布线使用网络
  • 其他应付款的会计编码
  • 固定资产报废如何交增值税
  • 库存商品一直没有销售怎么办
  • 进项税转出如何结转
  • 收到代持股权的账务处理
  • 无法收回的款项怎么记账
  • 不开票收入怎么做账
  • 应付工资的计算公式用友
  • 收到劳务费发票如何申报个税
  • sql删除重复数据只保留一条日期最大的
  • mysql理论知识
  • sqlserver用户权限不给增删查改表结构权限
  • mysql join查询慢
  • windoes版本
  • linux系统叫啥
  • 分区表 英语
  • 进入cmd命令
  • scrapy爬虫教程
  • js document.cookie
  • 批处理设置dns
  • 使用js检测浏览器的网站
  • node解决了什么问题
  • javascript 进阶篇3 Ajax 、JSON、 Prototype介绍
  • python语言文件
  • mac版本eclipse 怎么使用
  • python怎么写函数
  • android 进程启动流程
  • 江苏地税电子税务局官网登录
  • 临时工和季节工需要交社保吗合法吗
  • 车船税新标准计算办法
  • 岗位练兵的作用
  • 交完了契税后可以办房产证吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设