首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
MatthewMatt
2017-06-21 23:06
家里蹲大学 C++
关注
已关注
取消关注
请教下一个小问题,C++派生类都会包含基类对象成员吗?
详细补充下:无论派生类是已何种方式继承基类,包括public protected private,基类对象成员也可以是public protected private,我想问无论派生类以哪种方式继承基类,是不是在内存中派生类都会含有基类对象成员,哪怕派生类无法访问?
今天突然想到的一个小问题,求大神告知。
提示
全部评论
推荐
最新
楼层
Joran_02
浙江万里学院 C++
在C++编译器的内部 类可以理解为结构体 子类是由父类成员叠加子类新成员得到的 C++多态实现原理:
点赞
回复
分享
发布于 2017-06-22 07:49
Joran_02
浙江万里学院 C++
然后书上举了两个 指针转换的例子。你动手写一写
点赞
回复
分享
发布于 2017-06-24 19:54
Joran_02
浙江万里学院 C++
我去翻了下,根据上下文理解。就是这个意思
点赞
回复
分享
发布于 2017-06-24 19:52
Joran_02
浙江万里学院 C++
写的太概念性了吧,愿意应该是,基类的对象可以独立存在,独立存在的话,那就不是派生类对象的一部分了---这就是那个可能不是。
点赞
回复
分享
发布于 2017-06-24 19:46
MatthewMatt
楼主
家里蹲大学 C++
感谢各位大佬的回复。我在C++ primer 5th p534里有看到这么一句话“一个基类的对象可能是派生类对象的一部分,也可能不是”,请问下这句话是什么意思呢?我没有搞太懂,是不是和前面所表述的意思不一样?
点赞
回复
分享
发布于 2017-06-22 09:49
Joran_02
浙江万里学院 C++
test.h #ifndef _TEST_H_ #define _TEST_H_ typedef void Demo; typedef void Derived; Demo* Demo_Create(int i, int j); int Demo_GetI(Demo* pThis); int Demo_GetJ(Demo* pThis); int Demo_Add(Demo* pThis, int value); void Demo_Free(Demo* pThis); Derived* Derived_Create(int i, int j, int k); int Derived_GetK(Derived* pThis); int Derived_Add(Derived* pThis, int value); #endif test.c #include "test.h" #include "malloc.h" static int Demo_Virtual_Add(Demo* pThis, int value); static int Derived_Virtual_Add(Demo* pThis, int value); struct VTable // 2. 定义虚函数表数据结构 { int (*pAdd)(void*, int); // 3. 虚函数表里面存储什么??? }; struct ClassDemo { struct VTable* vptr; // 1. 定义虚函数表指针 ==》 虚函数表指针类型??? int mi; int mj; }; struct ClassDerived { struct ClassDemo d; int mk; }; static struct VTable g_Demo_vtbl = { Demo_Virtual_Add }; static struct VTable g_Derived_vtbl = { Derived_Virtual_Add }; Demo* Demo_Create(int i, int j) { struct ClassDemo* ret = (struct ClassDemo*)malloc(sizeof(struct ClassDemo)); if( ret != NULL ) { ret->vptr = &g_Demo_vtbl; // 4. 关联对象和虚函数表 ret->mi = i; ret->mj = j; } return ret; } int Demo_GetI(Demo* pThis) { struct ClassDemo* obj = (struct ClassDemo*)pThis; return obj->mi; } int Demo_GetJ(Demo* pThis) { struct ClassDemo* obj = (struct ClassDemo*)pThis; return obj->mj; } // 6. 定义虚函数表中指针所指向的具体函数 static int Demo_Virtual_Add(Demo* pThis, int value) { struct ClassDemo* obj = (struct ClassDemo*)pThis; return obj->mi + obj->mj + value; } // 5. 分析具体的虚函数!!!! int Demo_Add(Demo* pThis, int value) { struct ClassDemo* obj = (struct ClassDemo*)pThis; return obj->vptr->pAdd(pThis, value); } void Demo_Free(Demo* pThis) { free(pThis); } Derived* Derived_Create(int i, int j, int k) { struct ClassDerived* ret = (struct ClassDerived*)malloc(sizeof(struct ClassDerived)); if( ret != NULL ) { ret->d.vptr = &g_Derived_vtbl; ret->d.mi = i; ret->d.mj = j; ret->mk = k; } return ret; } int Derived_GetK(Derived* pThis) { struct ClassDerived* obj = (struct ClassDerived*)pThis; return obj->mk; } static int Derived_Virtual_Add(Demo* pThis, int value) { struct ClassDerived* obj = (struct ClassDerived*)pThis; return obj->mk + value; } int Derived_Add(Derived* pThis, int value) { struct ClassDerived* obj = (struct ClassDerived*)pThis; return obj->d.vptr->pAdd(pThis, value); } Main.c #include "stdio.h" #include "test.h" void run(Demo* p, int v) { int r = Demo_Add(p, v); printf("r = %d\n", r); } int main() { Demo* pb = Demo_Create(1, 2); Derived* pd = Derived_Create(1, 22, 333); printf("pb->add(3) = %d\n", Demo_Add(pb, 3)); printf("pd->add(3) = %d\n", Derived_Add(pd, 3)); run(pb, 3); run(pd, 3); Demo_Free(pb); Demo_Free(pd); return 0; }
点赞
回复
分享
发布于 2017-06-22 07:42
Joran_02
浙江万里学院 C++
会包含。我给你一个C实现c++多态和继承的例子
点赞
回复
分享
发布于 2017-06-22 07:37
JEWELCCLi
腾讯_测试开发
存在,最直接的例子就是多态机制中的虚函数表,可以百度下陈皓大神的那个blog,那个经典啊,有图有理,直观明了
点赞
回复
分享
发布于 2017-06-22 07:10
艾德
福建工程学院 C++
应该吧,举个例子。父类指针指向子类对象,父类指针可以访问private继承的子类对象中属于父类部分的成员,所以内存应该存在
点赞
回复
分享
发布于 2017-06-22 00:26
harry502
重庆邮电大学 C++
是的...
点赞
回复
分享
发布于 2017-06-21 23:35
暂无评论,快来抢首评~
相关推荐
09-14 14:30
已编辑
美团_金融服务_后端开发(准入职员工)
26届秋招字节后端一面面经详细版(已更新二、三面)
感觉之前发的心得分享流量有点低,在此引流一下:美团后端暑期实习经历+S级转正心得分享二、三面及后续timeline已更新:26届秋招字节后端二+三面速通面经详细版(附timeline)timeline:当天投递半小时后约面,9.1一面,面完立即约二面(已OC,二、三面后续更新)总结:主要关注实习(30min),少量八股和场景(12min)+mid+hard算法两道(20min)详细:先自我介绍,重点讲解一下实习做的是什么业务1.详细说一下你实习的整个系统,让我看看你对系统的理解答:实习相关,略(这部分可以结合自己的实习内容,重点在于梳理整体的链路,你主要负责的服务位于系统上下游的位置,和哪些上...
查看13道真题和解析
点赞
评论
收藏
分享
不愿透露姓名的神秘牛友
09-11 11:45
中兴 海测+海笔
投完简历,立刻发送测评,海测确认无误,又是北森测评,秋招真的是要做吐🤮了,每投一家做一次测评,又多又麻烦。 做完测评也是没多久就发笔试,主播投的硬件岗位,笔试很简单 全是基础的模电数电和通讯知识,非常基础。
投递中兴通讯等公司10个岗位
点赞
评论
收藏
分享
09-05 13:48
六盘水师范学院 化学分析
主打一个听劝
牛客48826091...:
哥们胸肌挺好看
点赞
评论
收藏
分享
08-29 16:36
门头沟学院 Java
断章取义这块儿
野猪不是猪🐗:
不如这样
查看图片
点赞
评论
收藏
分享
今天 11:12
门头沟学院 Java
双非秋招基本结束
秋招的硝烟终于渐渐散去,这段充满焦虑与期待的旅程,总算交出了一份还算满意的答卷。目前手里攥着两个 offer作为双非背景、非科班转码的 “跨界选手”,说实话,能拿到这两个 offer 我已经偷偷开心了好多次 —— 薪资待遇超出了预期,完全对得起过去大半年没日没夜补基础、刷算法的日子。当然,心里也藏着点小遗憾:最想去的米哈游、小红书、阿里,全都在面试中遗憾止步;蚂蚁的测评躺在待办列表里好久,可经历了几轮失败后,那种 “再试一次” 的勇气好像暂时被耗尽了,现在连打开测评页面的动力都没了。不过遗憾归遗憾,脚步可没停下来。接下来的重心很明确:一边好好完成字节的实习,抓住转正的可能;一边沉下心准备国有...
我的秋招日记
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
银行秋招
1.9W
2
...
出身寒微,却攥住鹅厂的入场券
1.0W
3
...
华为主管面准备笔记/适用于一切HR面经验贴
6210
4
...
那些未曾答上来的硬核面试问题
6119
携程秋招笔试
热聊中
5
...
27双非被美团激情拷打3h
4254
6
...
我眼里的悲伤
3249
7
...
来听我1000份面试经历的个人打分
3043
8
...
【26秋招】我是如何从男模上岸大厂程序员----上岸前的苦苦挣扎(2)
2928
9
...
机械结构单9硕求职寄录-9月
2289
10
...
第四个意向和米哈游拯救世界!!
2278
创作者周榜
更多
正在热议
更多
#
从顶到拉给所有面过的公司评分
#
20221次浏览
180人参与
#
机械人春招想让哪家公司来捞你?
#
357380次浏览
3109人参与
#
为了求职,我做过的疯狂伪装
#
12511次浏览
229人参与
#
晒晒你的中秋福利
#
15225次浏览
98人参与
#
职场破冰,你们都聊什么?
#
7232次浏览
74人参与
#
大家实习每天都在干啥
#
89062次浏览
518人参与
#
校招笔试
#
610次浏览
29人参与
#
机械笔面试考察这些知识点
#
10494次浏览
96人参与
#
你的公司给实习生发中秋礼物吗
#
1927次浏览
30人参与
#
bilibili求职进展汇总
#
89435次浏览
809人参与
#
工作压力大怎么缓解
#
105185次浏览
1052人参与
#
秋招OC许愿
#
346859次浏览
2530人参与
#
广联达求职进展汇总
#
11029次浏览
50人参与
#
机械人怎么评价今年的华为
#
208977次浏览
1524人参与
#
宣讲会你有哪些意向不到的收获
#
1415次浏览
22人参与
#
聊聊这家公司值得去吗
#
558888次浏览
3712人参与
#
你面试被问到过哪些不会的问题?
#
21882次浏览
816人参与
#
百度秋招提前批进度
#
150405次浏览
1770人参与
#
电网笔面经互助
#
46759次浏览
431人参与
#
秋招的嫡长offer
#
30452次浏览
285人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务