首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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-10 11:48
饿了么_产品研发部_算法工程师(准入职员工)
饿了么内推,饿了么内推码
这整体感受:自由度极高工作氛围:阿里的企业文化在互联网公司里算比较温和的,注重对员工的培养而非筛选,同事关系很融洽,工作氛围真的很棒,组里经常一起吃饭,工作之余也会周末约着一起出去玩,同事人都很好很nice工作强度:工作强度不低(24小时待机,偶尔处理一些紧急的商家问题,基本上商家都不会主动打扰),但整体节奏通常可以适应,互联网基本上都是这样的强度,大家都一样。日常生活:大厂福利待遇都不会差,餐补,话补……你能想到的通通都有,每天早上开完例会,12点前就得下市场去拜访第一个商户,然后就可以和同事考虑去哪吃饭,顺便探探店☺️当然也可以找个咖啡店☕坐着点主营外卖😙然后开始整理手头上的工作(总之自...
饿了么成长空间 318人发布
点赞
评论
收藏
分享
09-22 15:45
门头沟学院 Java
但凡有一条就不考虑的居然全凑一起了
谁给娃offer我给...:
我也遇到了,我说只要我通过面试我就去,实际上我根本就不会去😁
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
BG一般,如何逆天改命拿下后端秋招SSP?
1.5W
2
...
面试最后的反问环节,能问些什么?(附特供问题)
1.4W
3
...
从面试官的角度看待一场面试是怎么样的?
7952
4
...
最近面试回答不出来的题
7229
5
...
害,找工作哪有不上当的!
6473
6
...
从摆烂到OC,嵌入式人的血泪史
6194
7
...
作为普通家庭出身的我,为什么非大厂不可?
5585
8
...
感觉每个人都有自己的苦恼
4626
9
...
双非硕的十月份秋招总结
4531
10
...
一眼望到头的生活VS望不到头的生活
3892
创作者周榜
更多
正在热议
更多
#
实习在多还是在精
#
20912次浏览
179人参与
#
我的求职进度条
#
25945次浏览
427人参与
#
未岚大陆求职进展汇总
#
1086次浏览
11人参与
#
秋招踩过的“雷”,希望你别再踩
#
50479次浏览
683人参与
#
如果不考虑收入,你最想做什么工作?
#
30324次浏览
173人参与
#
大厂VS公务员你怎么选
#
10669次浏览
192人参与
#
爱玛科技集团求职进展汇总
#
34258次浏览
230人参与
#
柠檬微趣工作体验
#
12788次浏览
72人参与
#
顺丰求职进展汇总
#
61436次浏览
306人参与
#
如果再来一次,你还会学硬件吗
#
137327次浏览
1441人参与
#
华为池子有多大
#
101494次浏览
731人参与
#
实习下班不想学习,正常吗?
#
12469次浏览
145人参与
#
你见过哪些工贼行为
#
9832次浏览
71人参与
#
反问环节如何提问
#
111241次浏览
2257人参与
#
高学历就一定能找到好工作吗?
#
55076次浏览
607人参与
#
校招谈薪一定要知道的事
#
8695次浏览
90人参与
#
找工作中的小确幸
#
20588次浏览
197人参与
#
工作中,努力重要还是选择重要?
#
203539次浏览
2066人参与
#
你觉得什么岗位会被AI替代
#
11610次浏览
141人参与
#
远程面试的尴尬瞬间
#
203341次浏览
1292人参与
#
你的房租占工资的比例是多少?
#
60223次浏览
730人参与
#
如何用一句话描述你的职业
#
24574次浏览
171人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务