首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
暂无评论,快来抢首评~
相关推荐
03-04 15:25
重庆理工大学 测试工程师
25届还有救吗,求大佬给点意见
点赞
评论
收藏
分享
01-12 13:39
西安电子科技大学 golang
怎么找实习
朋友说他那的实习生连环境都不会装,还不如我。可我怎么感觉找个实习特别难🥲
实习简历求拷打
点赞
评论
收藏
分享
03-05 13:20
华北科技学院 Python
26二本求简历拷打
大四快毕业了,本来想找工作,发现被卡的很严重,目前投投春招只有中小厂要,性价比最高的方法应该怎么办呢,评论区的大佬们可以给建议考研还是工作吗?
点赞
评论
收藏
分享
今天 15:11
湖南财政经济学院 研发工程师
27届学院本找小厂实习简历求点评
#牛客AI配图神器##听劝,我这个简历该怎么改?#简历求拷打引流 字节,腾讯,阿里,美团,京东,小红书
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
字节java后端开发实习凉经
5155
2
...
AI产品实习生面试要达到什么水平?
2362
3
...
面试官视角聊聊:小龙虾OpenClaw如何0基础上手?
2362
4
...
春招冲刺季|求职交流群正式启动!发帖赚现金,抱团拿offer!
1911
5
...
3.3春招字节音视频前端一面
1371
6
...
腾讯后端一面
1173
7
...
27届后端简历求拷打
924
8
...
腾讯日常后台开发一面凉经
915
9
...
大三末9 0基础
677
10
...
实习生至暗时刻
637
创作者周榜
更多
正在热议
更多
#
交出你的校招焚诀
#
12173次浏览
204人参与
#
公司情报交流地
#
144777次浏览
1276人参与
#
神州信息求职进展汇总
#
3846次浏览
72人参与
#
实习生至暗时刻
#
20294次浏览
396人参与
#
27届求职交流
#
4302次浏览
106人参与
#
三月的小目标
#
13674次浏览
255人参与
#
26届求职交流
#
3615次浏览
79人参与
#
硬件人的简历怎么写
#
329910次浏览
3090人参与
#
教师节,你送祝福了吗
#
24965次浏览
101人参与
#
你的秋招第一面感觉怎么样
#
140675次浏览
806人参与
#
面试___岗的必刷题单
#
13766次浏览
241人参与
#
米哈游求职进展汇总
#
586880次浏览
3019人参与
#
哪些公司开暑期实习了?
#
19714次浏览
153人参与
#
经纬恒润求职进展汇总
#
153330次浏览
1080人参与
#
你的秋招第一场笔试是哪家
#
294824次浏览
2085人参与
#
AI面试问题分享
#
14735次浏览
294人参与
#
找AI工作应该卷什么?
#
4589次浏览
83人参与
#
春招开局,你有保底offer吗?
#
27889次浏览
221人参与
#
你经历过哪些AI幻觉?
#
5390次浏览
125人参与
#
多益网络求职进展汇总
#
71068次浏览
306人参与
#
实习想申请秋招offer,能不能argue薪资
#
225253次浏览
1197人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务