首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
暂无评论,快来抢首评~
相关推荐
10-14 12:33
传音控股_技术运维工程师(准入职员工)
传音内推,传音内推码
笔面三个月真的超级快一转眼就过去了 真的还挺享受干到自己相对喜欢的工作的这段时间,每天都过的挺充实的,部门氛围很好,工作的时候都比较严谨,但也很欢乐 而且超级幸运的是一个部门的人都很nice,天天一起吃饭偶尔摸鱼聊天,现在还真的有一点舍不得 公司福利什么的感觉也蛮好的,健身房咖啡机微波炉冰箱什么的都有,每天下午都有下午茶,一般是水果,偶尔会有酸辣粉冰粉薯片辣条什么的,反正是完全饿不着 公司基本上早九晚六午休一小时45分钟(其实是五点四十五下班)不要求加班,偶尔加一加可以换调休,晚上也有宵夜,我在项目里的时候着急出结果会加一两天(我三个月也就加了几天 没有食堂,楼下有重邮食堂,还有一些别的小餐馆...
传音控股公司福利 297人发布
点赞
评论
收藏
分享
10-13 19:48
北京邮电大学 Java
顺丰科技线下面试 速通
涉及东西还挺多的,连面两场有些问题忘了一面:数组和链表的区别mysql和redis的区别,使用的场景,qps各是多少left join是什么,连表查询为何低效索引是什么,怎么实现的,为何高效最左前缀匹配,失效原因有哪些设计模式,观察者模式是如何实现的场景题:百万订单,如何保证写入,数据库记录太多如何处理,订单服务崩了如何不影响其他业务手撕:最长回文子串二面:mysql慢查询的原因有哪些,如何优化Spring中有哪些设计模式,为什么bean默认单例消息队列应用在那些场景,如何保证可靠性、幂等明天上午hr面,想问能换base地吗,武汉薪资太低了
查看12道真题和解析
点赞
评论
收藏
分享
09-26 14:34
浙大宁波理工学院 Java
26届学院本只能试试转正实习了
太难了学院本😭
WhiteAlbum...:
学院本2中大厂垂直实习➕acm比赛 秋招0面试
点赞
评论
收藏
分享
10-14 14:56
CVTE_web后台开发工程师(准入职员工)
CVTE内推,CVTE内推码
CVTE面经分享记录,摘自优秀牛油4月投的驱动开发实习,现在给我面试...也算是第一个面试了,感觉有些不是常规八股。1.内核是如何启动驱动的2.内核是如何与用户层进行交互,(回答比如说系统调用,共享内存),举一个系统调用的例子,(回答read),具体是 怎么实现的,系统调用是怎么进入内核的,最终调用的是内核的什么接口。3.I2c和spi的优劣,分别几根线,作用4.Uart波特率有哪些,项目中串口传输(也可能是指I2C)的数据包是什么格式的,怎么确保不丢包,怎么确定接收到的 就是想要的数据5.Main函数和中断中如果都用到了同一个函数,有什么值得注意的,如果都用到一个全局变量那6.使...
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
族望留原籍,家贫走四方
5298
2
...
被秋招面试感动了
1797
3
...
实习越多越好还是越精越好?
1484
4
...
大厂这么卷,去国企,外企“上岸”?
1234
5
...
记录秋招 Offer 选择(从纠结到坚定)
1184
6
...
想问一下27届明年暑期实习大概什么时候开
1146
7
...
开源活动
887
8
...
27懂车帝日常
875
9
...
球球大家,给菜菜小弟一点建议
665
10
...
秋招总结,offer帮选
650
创作者周榜
更多
正在热议
更多
#
你现在会用到哪些AI技能?
#
9414次浏览
95人参与
#
腾讯工作体验
#
514900次浏览
3551人参与
#
平安产险科技校招
#
1117次浏览
0人参与
#
大厂VS公务员你怎么选
#
33776次浏览
449人参与
#
我的求职进度条
#
102286次浏览
1298人参与
#
发面经攒人品
#
2620382次浏览
35804人参与
#
未岚大陆求职进展汇总
#
8952次浏览
88人参与
#
我对___祛魅了
#
132970次浏览
738人参与
#
来聊聊机械薪资天花板是哪家
#
145247次浏览
801人参与
#
你还有多少年退休?
#
27261次浏览
192人参与
#
多益网络工作体验
#
55391次浏览
292人参与
#
小马智行求职进展汇总
#
14030次浏览
50人参与
#
实习在多还是在精
#
36911次浏览
259人参与
#
机械人与华为的爱恨情仇
#
132850次浏览
1008人参与
#
顺丰求职进展汇总
#
63935次浏览
316人参与
#
秋招踩过的“雷”,希望你别再踩
#
88979次浏览
1110人参与
#
你的房租占工资的比例是多少?
#
65669次浏览
802人参与
#
实习下班不想学习,正常吗?
#
22228次浏览
184人参与
#
反问环节如何提问
#
115978次浏览
2472人参与
#
你觉得材料多少算高薪
#
26551次浏览
159人参与
#
如果不考虑收入,你最想做什么工作?
#
33100次浏览
190人参与
#
你见过哪些工贼行为
#
17878次浏览
101人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务