首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
暂无评论,快来抢首评~
相关推荐
昨天 16:05
运城学院 Java
球球了,锐评我的简历吧,找不到工作(双非本)
听劝,我这个简历该怎么改...
点赞
评论
收藏
分享
03-07 20:25
蚌埠坦克学院 嵌入式软件开发
三月份的目标是健身
三月份,我给自己定下了一个简单但重要的目标——坚持健身。过去一段时间,我总觉得生活有些忙乱,身体也慢慢变得没有以前那么有活力。所以我决定,从这个月开始认真对待自己的身体。我希望每周都能抽出时间去运动,不一定要很激烈,但一定要坚持。无论是跑步、力量训练,还是简单的拉伸,只要动起来,我就已经在向更好的自己靠近。健身对我来说,不只是为了外表,更是为了健康和自律。我相信,只要一步一步坚持下去,三月结束的时候,我一定会看到一个更有活力、更自信的自己。
三月的小目标
点赞
评论
收藏
分享
03-02 20:26
湘潭大学 算法工程师
无实习加一般学历,求简历拷打
xtu大迫杰:
偶遇校友,祝校友offer打牌
点赞
评论
收藏
分享
01-29 20:38
山西警察学院 销售技术工程师
求实习啊
老板加个卤鸡蛋:
HR看了以为来卧底来了
点赞
评论
收藏
分享
03-05 15:27
杭州电子科技大学 大数据开发工程师
文档是你的“免死金牌”
好记性不如烂文档: 每一个你踩过的坑、配好的环境、梳理出的业务逻辑,都写成 Markdown 存下来。不仅是记录,更是输出: 试着把这些文档分享到团队内网(Wiki/语雀)。一个能主动沉淀知识、完善团队文档的实习生,在 Leader 眼里是具有“Owner 意识”的稀缺人才。
实习生的生存小技巧
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
三月创作集结令:创作狂欢季,等你开场🎉
2.1W
2
...
面试官视角聊聊:AI大模型岗从业务面到HR面全流程
5826
3
...
我怕自己努力了这么久,最后还是毕业即失业
4439
4
...
一个好的简历 Agent 项目,必须具备的几个关键因素(附项目推荐)
4269
5
...
字节后端一面
3949
6
...
清华本硕找实习ing
3798
7
...
腾讯后台开发一面
3785
8
...
转转一面(二面挂)
3721
9
...
转转-java开发-一面
3357
10
...
27 暑期实习 腾讯 后台开发 一面(2026.3.4)
3329
创作者周榜
更多
正在热议
更多
#
今天你投了哪些公司?
#
77406次浏览
1524人参与
#
你都用AI做什么
#
33460次浏览
313人参与
#
你感受到金三银四了嘛?
#
41789次浏览
442人参与
#
秋招感动瞬间
#
117653次浏览
542人参与
#
虽然0面试,但今天___,夸夸自己
#
4190次浏览
108人参与
#
携程笔试
#
115745次浏览
714人参与
#
春招 / 实习投递,你最焦虑的一件事
#
36592次浏览
772人参与
#
如果给AI员工评绩效,我的答案是……
#
5306次浏览
130人参与
#
哪一刻你对工作祛魅了?
#
12780次浏览
131人参与
#
找工作,你都让AI帮你做什么?
#
3682次浏览
139人参与
#
实习学不到东西正常吗?
#
5050次浏览
81人参与
#
滴滴求职进展汇总
#
313279次浏览
2487人参与
#
刚工作的你,踩过哪些坑?
#
3195次浏览
77人参与
#
为了秋招你都做了哪些准备?
#
34273次浏览
544人参与
#
今年找实习到底有多难?
#
11232次浏览
116人参与
#
签约/解约注意事项
#
888994次浏览
4725人参与
#
快手工作体验
#
312453次浏览
2914人参与
#
苦尽甘来时,再讲来时路
#
74137次浏览
958人参与
#
AI时代下,你的岗位要求有什么变化?
#
5731次浏览
113人参与
#
2023毕业生求职有问必答
#
238635次浏览
1676人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务