首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
暂无评论,快来抢首评~
相关推荐
05-25 18:54
重邮电子信息硕转码有机会吗
25届,因为春招只有一个offer,去了一家小公司干材料,结果被告知试用期不过,只能回家。年后开始自学,已经学完了C、C++、 linux系统和网络。BOSS看到华为od接受转码,但好像卡目标院校,想知道我有机会吗?求各位大哥大姐给小弟点建议
点赞
评论
收藏
分享
05-27 20:40
已编辑
天津师范大学 Java
求大佬们指点一下简历,目标中场日常实习。
听劝把内容改简洁点了,加粗一些内容后感觉看着可能更顺眼了,求多指点
小浪Coding:
能找下agent实习已经是万幸了,这简历很普通,降低预期
点赞
评论
收藏
分享
05-07 17:34
重庆邮电大学 C++
双非28届这么难吗
boss投了200+,没一个约面的,日常实习这么难找吗,大佬们说说是简历问题还是什么😭
有点心碎的杨桃很想润:
我在美团,小道消息今年秋招之后美团可能就完全不会招日常实习了
点赞
评论
收藏
分享
04-02 10:54
门头沟学院 Java
大厂的流程救了我一命,字面意义上的
差点把线上搞崩那次,到现在想起来手心还会出汗。实习第六周,我改了一个配置参数。自测过了,跑了几个case没问题,心想这么小的改动走什么灰度啊,直接上呗。提交MR的时候mentor拦住了我,说走灰度。我当时内心是翻白眼的——至于吗?灰度放了1%的量,五分钟之后监控开始报警。我改的那个阈值,影响了下游一个缓存服务的淘汰策略。我看着监控面板上那条飞起来的红线,感觉自己的血也凉了。mentor倒是很淡定,一键回滚,然后跟我说:这个接口日调用量几千万。如果刚才全量上了,你今天就可以体验什么叫P0事故复盘了。那一刻我是真的怕了。不是怕被骂,是怕影响真实的用户。之前在小厂实习,出了bug重启一下就好了,DAU才几千,没人在意。但大厂不一样,你敲的每一行代码背后都是真实的人在用。从那以后我再也没有跳过任何一个流程。你说大厂的流程烦不烦?烦。但被流程保护过一次之后,你会真心感激这份烦。感谢我师,就我🐶命
小魔仙:
所以说大厂的流程真不是形式主义,是用无数次P0事故换来的血泪经验
大厂实习和小厂实习最大的...
点赞
评论
收藏
分享
05-27 11:42
佛山大学 Java
双非一本大三下无实习,这份简历能找100人小公司实习吗
我是疼逊最大黑子:
模版太丑
实习,投递多份简历没人回...
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
27届暑期前端高频面试题汇总(字节百度阿里快手等多家大厂)
6058
2
...
字节三面
3188
3
...
美团计划裁员30%,测试和产品砍一半,测试全栈化时代来了!
2019
4
...
26前端的深夜
1441
5
...
你说你用Claude,你用的是 CLI,还是 Agent、Opus?
1211
6
...
字节实习一个月祛魅了
1058
7
...
继续实习VS暑假沉淀,怎么选....
1053
8
...
今天陌陌的笔试怎么样
1026
9
...
收到了字节的AIoffer
911
10
...
xdm,开发投麻了,顺手试试投了测试,但是又有点犹豫1. 如果干了测试,以后找正式的开发是不是会更难?(没到万不得已,我还是想走开发)2. 合同签一年,这个会不会太久了?值得一去吗?给点建议#实习,不
623
创作者周榜
更多
正在热议
更多
#
要毕业了,再不说就来不及了
#
25842次浏览
335人参与
#
拼多多集团-PDD笔试
#
115058次浏览
703人参与
#
拼多多工作体验
#
68712次浏览
465人参与
#
求职遇到的搞笑事件
#
203292次浏览
1044人参与
#
找工作时遇到的神仙HR
#
1254199次浏览
5959人参与
#
体制内上岸心路历程
#
40337次浏览
235人参与
#
职场吐槽大会
#
368518次浏览
2317人参与
#
小米求职进展汇总
#
1085180次浏览
6551人参与
#
你都用AI做什么
#
56456次浏览
528人参与
#
国庆前的秋招小结
#
305369次浏览
1758人参与
#
硬件人秋招进展
#
298280次浏览
4056人参与
#
满分简历要如何准备?
#
323904次浏览
3386人参与
#
三月的小目标
#
144611次浏览
1226人参与
#
AI时代下,你的岗位要求有什么变化?
#
43505次浏览
290人参与
#
得物app工作体验
#
71386次浏览
125人参与
#
你是怎么和mt相处的?
#
112082次浏览
584人参与
#
我的AI电子员工
#
45314次浏览
262人参与
#
担心入职之后被发现很菜怎么办
#
309199次浏览
1237人参与
#
万物皆可发面经
#
8028次浏览
95人参与
#
现在还是0offer,延毕还是备考
#
1436223次浏览
7971人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务