位置: 编程技术 - 正文

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

  • 小规模纳税人能开专票吗2023
  • 门诊医保报销发票
  • 职工薪酬如何做账
  • 出口支付给境外的佣金
  • 年底计提是什么意思
  • 签三方协议需要什么资料
  • 什么情况可以安排待岗
  • 受托代销商品和受托代销商品款怎么列示
  • 一般纳税人建筑工程税率是多少
  • 初级会计考试税率要记吗
  • 票货分离怎么处理
  • 企业年金的税收政策
  • 国税代开普通发票现需作废需要哪些资料?
  • 税务会计学知识点
  • 外籍人士享受满五唯一吗
  • 上年多计提附加税调整了,今年怎么调整
  • 小规模跨年发票可以入账吗
  • 工程结算完后剩余资金如何处理?
  • w10系统程序停止运行
  • windows10如何设置锁屏时间
  • 公司治理的基本内涵
  • 投资新公司的账务处理
  • 华为鸿蒙系统如何关闭纯净系统
  • googlechrome谷歌浏览器
  • 个税返还会计政策
  • 资产负债表存货包括哪些科目
  • 皮肤痒怎么回事
  • uniapp安装插件
  • 退回银行本票会计分录
  • Vue3 & app.use 与 install 函数的作用
  • 计算机视觉方面的期刊
  • 转销股票会计分录
  • 定额发票累计领用金额怎么填
  • php年月日时间代码
  • 我一定要用自己的双手拼出来
  • js示例
  • html游戏大全
  • 稿费演出费等劳务收入算工资吗
  • 策划费多少钱
  • ieee compel 2021
  • mongodb导出数据库数据文件
  • python的next()
  • 非货币性资产交换以公允价值为基础进行计量
  • 外汇保值业务的特点包括
  • 进口关税增值税在哪里打印
  • 个人所得税中的速算扣除数是什么意思
  • 企业增值税的征收方式
  • 水利建设基金计费方式
  • 增值税附加税的税收优惠政策
  • 用现金支付的款项
  • 递延所得税负债大白话解释
  • 商品亏本出售分录
  • 营业外支出是什么类账户
  • 福利费可以直接发钱吗
  • 两笔不同业务能转账吗
  • 企业固定资产清理流程
  • 融资租入的设备怎么入账
  • 远程登陆服务器命令
  • Win10预览版拆弹
  • window 虚拟化
  • winhelp.exe - winhelp是什么进程
  • mac双系统怎么调整磁盘空间
  • 电子书进不去系统原因
  • nodejs发送http请求
  • 批处理语言 从入门到精通
  • 如何正确使用标准电池和检流计
  • jquery源码分析
  • 用js获取地址栏url参数的方法
  • linux shell 进程
  • javascript 继承
  • jQuery的 $.ajax防止重复提交的两种方法(推荐)
  • vs2010编译器在哪里?
  • JavaScript+html5 canvas制作色彩斑斓的正方形效果
  • 举例讲解生产可能性曲线
  • 怎么用python做爬虫
  • Python的for和in
  • androidstudio快速入门
  • 就业失业登记证网上申请
  • 服务业增值税率6% 购进13%手机怎么抵扣
  • 家政公司的清洁工具
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设