问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c++ 父类指针问题

发布网友 发布时间:2022-08-15 04:56

我来回答

2个回答

热心网友 时间:2023-09-12 12:28

因为,第二行调用foo函数的实参是子类数组首元素的地址,而foo函数的形参是基类指针,由于子类对象的大小是基类的2倍(基类只有bval,子类有bval和dval),所以在循环中执行arr++时,该指针就交替地指向bval和dval,于是就交替地输出0和1了。

热心网友 时间:2023-09-12 12:28

说实话,这题有点另(wu)类(liao)。
Deri类的内存布局是:
+------------+
| Base::bVal |
+------------+
| Deri::dVal |
+------------+
初始化后的内存数据就是两个整型数据(0,1)。
deriArr数组的内存布局就是连续的5个Deri类对象,初始化后的内存数据就是(0,1,0,1,0,1,0,1,0,1),10个整型数据。

foo 函数接受的是 Base 类指针,而调用时传递的 deriArr 指针,是 Deri 类型,按照 up casting 规则,编译器将把 Deri* 转换为 Base*,foo 就会把应该是 Deri 类对象数组的内存,当成 Base 类对象数组来处理了,而 Base 类只有1个整型数据,于是就输出了01010。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
64岁的老头感冒了,还喝一瓶啤酒,又喝3包感冒药,吃了3个阿莫西林消炎药... ...今天中午12点喝了一瓶啤酒,不会有反应死了吧? 喝一瓶啤酒吃药没事吧 养育孩子有哪些正确的方式? 联想电脑一开机就蓝屏怎么解决 光遇冥想任务怎么完成_冥想任务攻略 光遇 光遇云野的锦鲤池冥想怎么做? 光遇 光遇在滑冰场旁冥想的任务怎么做? 光遇在仙乡的金塔下冥想任务怎么做 任务达成方法介绍 光遇 光遇在禁阁的神坛旁冥想怎么做? 父类指针 为什么能 指向 子类对象 为什么父类指针可以指向子类反之则不行 c++中父类与父对象的关系及父对象和父指针的关系 枇杷树怎么往一边倒了是怎么回事? 水瓶座男生到底有什么特点 山东校荐怎么算公式 成绩不够向学校申请专升本,给校荐生名额吗 滨州职业学院专升本校荐名单啥时候出 校荐生需要什么条件? 纸纸袋工厂让不让覆膜? 华中科技大学新生银行卡纸袋里有几样东西? 手提纸袋有多厚 纸袋和白卡纸袋哪一种高档些 你好,我脚面上突然很痒然后就有了水泡请问是怎么回事? 白卡纸袋是什么样的 结爱千岁大人的初恋主要人物关系介绍 感情线是怎样的 父母该怎么教育孩子 需注意四大不尊重 想让孩子身体长高,父母要注意哪些事项呢? 父母应该注意孩子哪些方面的营养? 在Word中怎样将文本格式改成数值并计算 为什么父类指针可以指向子类反之则不行? 父类指针指向子对象,父类和子类有同名函数,但不是虚函数,当这个指着指向这个函数 c++中判断父类指针实际指向的子类类型 关于父类指针子类对象的问题 微信怎样可以不用短信验证就登录? 如何登陆别人码不需要验证码 能不用验证就被盗了吗? 木耳番茄炒肉片的做法,木耳番茄炒肉片怎么做 怎么查诺基亚手机是不是全新没用过的 怎么辨别诺基亚手机是否翻新机 一些生化考研题目请求解答 诺基亚手机使用记录查询!! 历年各高校生物化学考研真题 上海现货是什么意思? 手机电视免流是什么意思 用穿过的旧衣服当脚垫会影响运气? 去双喜大道5号龙泉大厦政务服务中心坐几路公交车? 十二属相分别缺哪些内脏,十二生肖中都相对于人缺少什么器官 属蛇的人应该佩戴什么样的朱砂,朱砂可以长期佩戴吗 浏阳蓝思科技北园一厂人事