首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
暂无评论,快来抢首评~
相关推荐
不愿透露姓名的神秘牛友
06-25 17:33
腾讯暑期:灰👉🏻绿(求约面...
3月份面试挂了之后,一直灰,这两天突然变绿... 想问下大家,变绿是我投递的部门看了简历还是其他部门也有可能? 这时候换意向会有影响吗?
在泡澡的咸鱼很幸福:
变绿就是被部门锁了,一般三天内就约面了
点赞
评论
收藏
分享
不愿透露姓名的神秘牛友
06-26 14:50
找工作遇到的奇葩HR
人力小鱼姐:
有后面墨迹那两句的时间问题早回答完了
点赞
评论
收藏
分享
05-07 14:11
大连工业大学 Java
我的信息怎么泄露出去的
迟缓的斜杠青年巴比Q...:
简历被投过的公司卖出去了,我前两天遇到过更离谱的,打电话来问我有没有意向报班学Java学习,服了,还拿我学校一个学长在他们那报班学了之后干了华为OD当招牌
点赞
评论
收藏
分享
06-18 22:12
赣东学院 Java
26学院本,求指点
一直不敢投,感觉太弱了,什么都不会,但说是一直准备其实就是在拖,现在看别人的面经还是感觉答不出来,也基本都在死背八股,结果还是感觉八股不行,到时候拷打项目和场景题更是不知道怎么回答😭😭😭
在下uptown:
这简历重复率也太高了,怎么都长一样啊
我的简历长这样
点赞
评论
收藏
分享
06-27 10:30
长沙理工大学 Web前端
请尽早接受秋招是个概率的游戏
考公、考研、大厂SSP、独角兽企业、外企、国企、央企、回家啃老、创业、投身底层......等等等,这些可以说是我们上岸的一些手段和机会,为什么说秋招是个概率游戏呢?且听鼠鼠娓娓道来!鼠鼠是一名24届985理科生,和其他卷生卷死的同学不一样,鼠鼠更相信命运,更喜欢躺平,大学暑假的时候,鼠鼠的舍友都去实习了,各种大厂,听都没有听过,而我呢却选择了旅游,我加入了一个小组织和大家一起到处骑车,那按照牛友们目前的看法来说,鼠鼠已经完了,秋招0实习,0项目,0竞赛,三无青年只有剩下毕业的焦虑了,这就是我觉得秋招是个概率游戏的原因。转眼到了秋招的时候我的室友们,大家都有很多的实习在手里,但是他们面试很碰壁,...
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
七牛云海笔
1.2W
2
...
去哪儿旅行又打复活赛了
6890
3
...
如何从零开始拥有开源经历,这可能是牛客最全的整理
4029
4
...
鼠鼠感觉前途一片黑暗啊
3899
5
...
26届秋招在即,分享我的Offer经验
3864
6
...
美团暑期面经,已挂
3395
7
...
面试看AI好像被发现了
2946
8
...
26届二本,学校强制进厂!
2719
9
...
25届在6月最后一天拿到offer了
2618
10
...
接offer了,还是sp呢
2430
创作者周榜
更多
正在热议
更多
#
实习,不懂就问
#
5215次浏览
76人参与
#
小米提前批笔试难吗
#
34181次浏览
358人参与
#
现代汽车前瞻技术研发急速编程挑战赛
#
14777次浏览
146人参与
#
26届校招投递进展
#
32520次浏览
248人参与
#
央国企投递记录
#
88286次浏览
1362人参与
#
为了找工作你花了哪些钱?
#
28602次浏览
275人参与
#
神州信息工作体验
#
11699次浏览
57人参与
#
校招第一份工作你干了多久?
#
86308次浏览
399人参与
#
来聊聊你目前的求职进展
#
634448次浏览
6747人参与
#
考公还是考研,你怎么选?
#
27838次浏览
140人参与
#
小米硬件提前批进度交流
#
168230次浏览
1523人参与
#
外包能不能当跳板?
#
34587次浏览
221人参与
#
你觉得专业和学校哪个对薪资影响最大
#
61443次浏览
491人参与
#
设计人的面试记录
#
123623次浏览
1341人参与
#
打工人的精神状态
#
50023次浏览
867人参与
#
硬件人你反向读研了吗
#
42580次浏览
637人参与
#
如果中了500万,你会离职吗?
#
84591次浏览
654人参与
#
你今年的保底offer是哪家
#
118566次浏览
538人参与
#
大疆的机械笔试比去年难吗
#
72988次浏览
619人参与
#
怎么评价今年的华为
#
129141次浏览
568人参与
#
硬件人秋招的第一个offer
#
78039次浏览
1149人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务