首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
暂无评论,快来抢首评~
相关推荐
11-27 15:11
门头沟学院 Java
哈啰出行武科大专场
有面武科大专场的吗,可以交流一下吗
点赞
评论
收藏
分享
10-19 15:33
蚌埠坦克学院 算法工程师
有无老哥知道这个招笑SM薪资什么情况
今天在学校校招看到的,坐标无锡滨湖区某大学。
面了100年面试不知...:
这,钱少的也太稳定了
点赞
评论
收藏
分享
10-09 17:17
已编辑
门头沟学院 Java
秋招真没招了
牛友们 真的后悔选Java了 学院本太难了 整个秋招可能投出去20.30份 就面了一个多益网络 一面就挂了。但我感觉我答得没问题 不知道简历是不是有问题 包装的太弱了
活泼的代码渣渣在泡池...:
同学你好,我也是学院本,后天要面这个亚信科技,是实习,请问问题都啥样呀,我项目就做了网上的,这是第一次面试
投递多益网络等公司6个岗位
点赞
评论
收藏
分享
11-26 14:54
西安电子科技大学 Java
来自面试官给我的建议,我备受启发!
很少分享技术以外的东西,但今天面试时,面试官的一番建议让我受益匪浅。想借此与大家分享,希望我们都能在职业和成长的道路上,多一些启发与成长,共勉。格局面试快结束时,我谈到了作为程序员对不断学习和技术沉淀的追求。对此,面试官没有局限于程序员或产品的视角,而是从更高的层级,结合技术与行业,给了我一些建议,阐释了程序员职业成长的核心逻辑。他指出:技术与产品相辅相成,但程序员的发展一定是建立在行业深耕之上的。产品定义了用户价值和业务需求,技术提供实现手段。技术固然重要,需要持续学习,但唯有在特定行业中持续沉淀,才能形成差异化的技术能力,支撑出真正优秀的产品。好的产品又能反过来提升技术水平,形成良性循环。...
发面经攒人品
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
来个oc暖我一整天
1930
2
...
末9本,秋招后端失败总结
1376
3
...
11 月底了还是 0offer
1123
4
...
卧槽了学院本真的没希望了吗
898
5
...
面试官再问你消息队列你就把这些甩给他!
859
6
...
学院本的兄弟们秋招还好吗
823
7
...
细说:“震惊,某强一本/研究生/博士生,竟沦落到以送外卖为生”
698
8
...
海康威视--java一面--避雷
655
9
...
腾讯IEG Java转Go后台开发面经
599
10
...
(中)学院本+双非硕+非科班中选蚂蚁OSPP2025开源之夏TuGraph社区项目的全记录
588
创作者周榜
更多
正在热议
更多
#
扒一扒那些奇葩实习经历
#
135048次浏览
1133人参与
#
机械制造面试点评
#
77993次浏览
463人参与
#
你们公司哪个部门最累?
#
34881次浏览
245人参与
#
实习吐槽大会
#
393812次浏览
2163人参与
#
腾讯工作体验
#
532577次浏览
3601人参与
#
机械/制造每日一题
#
77622次浏览
1391人参与
#
华勤技术工作体验
#
11616次浏览
22人参与
#
牛友们的论文几号送审
#
60582次浏览
830人参与
#
毕业季,你想好怎么跟生活对线了吗?
#
259263次浏览
3846人参与
#
如何提高实习转正率?
#
60318次浏览
422人参与
#
职场上哪些事情令人讨厌
#
29757次浏览
120人参与
#
机械人晒出你的简历
#
141728次浏览
865人参与
#
硬件人秋招进展
#
253645次浏览
3943人参与
#
入职以后才知道的校招谎言
#
107502次浏览
668人参与
#
听到哪句话代表面试稳了OR挂了?
#
108211次浏览
481人参与
#
你的秋招白月光和意难平公司
#
28666次浏览
228人参与
#
你想跟着什么样领导?
#
20238次浏览
170人参与
#
运营人的第一份offer应该如何选
#
198781次浏览
1227人参与
#
分享一个让你热爱工作的瞬间
#
51029次浏览
442人参与
#
深信服求职进展汇总
#
239945次浏览
1803人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务