首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
暂无评论,快来抢首评~
相关推荐
07-27 17:21
OPPO_运营管理_HR
鹅厂这么活
整体感觉:温和儒雅,攻击性不像阿里和字节那么强 1. 腾讯每个月会给员工发30Q币,用这30Q币可以给自己买一个腾讯视频会员和一个QQ音乐会员。 2. 每月1号可以领取体验福利,别问我的王者荣耀10级vip怎么来,反正没花一分钱 3. 一些特殊日子时,公司都会发一些福利。比如之前QQ音乐周年纪念日,给全体腾讯员工一年的绿钻会员 4. 在腾讯也不需要怎么买衣服了,每隔一段时间就会发些文化衫,光文化衫都穿不过来了。除了发衣服,也会有各种大礼包,比如本子、包、贴纸、公仔、吃的 5. 腾讯内部有一个Q米系统非常棒,每年都会给员工发放2000左右(不同职级不一样) 6. 腾讯自己创造了一个孝顺长辈节,每...
OPPO官方内推:
o子hr认证,你发鹅厂的?
腾讯公司福利 886人发布
点赞
评论
收藏
分享
不愿透露姓名的神秘牛友
07-28 16:46
两段互联网实习,我开始祛魅了
第一段互联网实习结束🔚真的要做这个工作吗?是我的问题还是工作的问题?目前某中大厂实习中,感觉自己做的工作毫无价值毫无意义。。。秋招想跑路了,不想投互联网了感觉每个人都在为了一些看似有意义实则只是为了帮资本家圈用户钱的事情耗尽心情和精力
内向的柠檬精在研究求...:
事实上你秋招还是会选择冲大厂
我对___祛魅了
点赞
评论
收藏
分享
07-20 12:27
门头沟学院 Java
二本学院能就业吗
吸取了大家的建议 把简历布局重新调整了一下,名字哪些隐藏了,会漏马甲的项目名字论文也先去掉了,大家看看还有没有需要补充的,我在想要不要包一个大厂的实习
点赞
评论
收藏
分享
06-20 08:56
长安大学 产品经理
HR说这话什么意思?
搞抽象?调节氛围?玩尬的?咱也就是说,你觉得呢???
机械打工仔:
这小伙子一看面相就值钱
点赞
评论
收藏
分享
07-24 15:26
门头沟学院 前端工程师
蔚来好快啊!
看了JD我信心满满改简历,不到一天蔚来就发来感谢信生怕发晚了我就要入职了😂
投递蔚来等公司7个岗位
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
都是 dirty work,为什么别人的简历上就能言之有物🤔
1.9W
2
...
百度提前批一面(秋招第一场也估计是压力最大的)
7036
3
...
秋招首凉-腾讯TEG 云架构平台提前批
3801
4
...
干活最少的实习生因为长得漂亮转正了
3322
5
...
【07.29更新】能救一个是一个!26届毁意向毁约裁员黑名单
3298
6
...
团孝子启动ing!
3090
7
...
虾皮后端一面(已挂)
2458
8
...
令人心动的offer!!!
2349
9
...
最近是各位大佬离职回去准备秋招了嘛,鼠鼠最近投的实习居然都有回应了,基本上当天投的两天之内都能有回应,要是秋招能有这样就太好了呜呜,简单记录一下吧。7月23日:快手-平台消费(一面)1.实习介绍(干了
2296
10
...
26滴滴秋招提前批Java一面
1992
创作者周榜
更多
正在热议
更多
#
你遇到最难的面试题目是_
#
8724次浏览
120人参与
#
分享一个让你热爱工作的瞬间
#
32434次浏览
337人参与
#
中兴秋招
#
197802次浏览
2223人参与
#
工作中哪个瞬间让你想离职
#
53108次浏览
462人参与
#
工作压力大怎么缓解
#
94154次浏览
994人参与
#
你最讨厌面试问你什么?
#
16762次浏览
209人参与
#
腾讯大前端岗位热招中
#
118次浏览
1人参与
#
26届的你,投了哪些公司?
#
23468次浏览
288人参与
#
我对___祛魅了
#
33419次浏览
317人参与
#
简历上的经历如何包装
#
14962次浏览
522人参与
#
你跟室友的关系怎么样?
#
4347次浏览
77人参与
#
多益网络求职进展汇总
#
31548次浏览
141人参与
#
如何快速融入团队?
#
12067次浏览
143人参与
#
和同事相处最忌讳的是__
#
16438次浏览
162人参与
#
什么样的背景能拿SSP?
#
18170次浏览
137人参与
#
机械人的金三校招总结
#
35755次浏览
461人参与
#
打工人的精神状态
#
68539次浏览
1116人参与
#
秋招前后对offer的期望对比
#
302546次浏览
2223人参与
#
我和mentor的爱恨情仇
#
62112次浏览
379人参与
#
饿了么求职进展汇总
#
64297次浏览
636人参与
#
实习生活中那些难忘的瞬间
#
165587次浏览
2459人参与
#
元戎启行求职进展汇总
#
36349次浏览
278人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务