首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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-03 19:03
大连理工大学 Java
字节剪映后端暑期面经(附timeline)
一面:5.20二面:5.22三面:5.28hr面:5.29offer邮件:6.3本来想着都五月下旬应该没什么机会了,找不到就回学校all in秋招,现在看来还有机会。还在战斗的兄弟们不要放弃,会赢的!一面:Java相关垃圾回收器CMS,G1的区别内存泄露排查的方法多线程安全HashMap的原理,线程安全吗反射机制MySQL相关事务隔离级别慢查询优化分布式事务(没了解过)Redis相关内存淘汰策略持久化机制慢查询优化计算机网络输入url到显示网页的过程,涉及了哪些协议,数据包从应用层到链路层怎么变化的算法: lc42 接雨水二面:一、问实习二、计算机网络1. TCP协议 ○ 如何实现可靠传输?(...
点赞
评论
收藏
分享
06-02 19:33
河南大学 人工智能
超聚变-郑州-笔试
不知道来的的题,做出来第一个而已,太急了,比考试和比赛还慌。1.判断字符串是否双对称字符串:挺简单的吧,几个判断就好。2.智能音乐推荐系统:其实不是很难,感觉搞几个字典统一操作就行,先创建和并入,后面就是针对性的操作。3.华为咖啡机问题:用贪心策略应该可以,我一直没转过那个弯。应该是过不了的了,哈哈哈哈,不知道,可不可以再试试。
查看3道真题和解析
投递华为等公司8个岗位 >
点赞
评论
收藏
分享
05-26 09:07
已编辑
门头沟学院 Java
小厂java实习
公司待遇很不错 我很喜欢 氛围也不错 什么都好就是没去
头顶尖尖的程序员:
待遇确实好
点赞
评论
收藏
分享
04-15 13:02
四川轻化工大学 测试工程师
四级居然还能加工资
太好了 四级还值三百块
ResourceUtilization:
四六级不愧是大学最有用的证之一
点赞
评论
收藏
分享
昨天 16:21
东南大学 C++
嵌入式面经不是面试时才看!!
学弟学妹们,别等到临近秋招或者已经开始秋招才开始搜面经!嵌入式面经应该越早看越好🧠 为什么面经要提前看?我认识不少同学,都是秋招时才临时开始刷面经,结果发现:项目根本讲不清楚,面试被问穿了;操作系统、RTOS、C++基础一问三不知;面试时间间隔太短,临时学根本来不及。面经从来不是“考前突击包”,而是“学习指南”。你在库库学C、RTOS、Linux,可你知道这些知识企业是怎么考察的吗?学了一堆,是在感动自己,还是真的学了面试需要的东西?你知道你做的项目,哪些点是面试官关注的?哪些能写进简历打动HR?这些都得通过看面经、整理八股才能建立“对标意识”。📄 面经怎么整理,怎么用?📌两个方向整理八...
嵌入式笔面经分享
牛客创作赏金赛
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
同学们,后端开发其实没你想的那么难
3.1W
2
...
分享一下年底被广州某游戏公司裁员的经历
2.6W
腾讯暑期补捞中
热聊中
3
...
双非腾讯云智后台开发oc面经
1.2W
4
...
牛友们是选爱情还是选前途?
9803
TP-LINK开奖
热聊中
5
...
作为面试官,比较喜欢听到「实习收获」回答是什么样的?
9336
6
...
27届前端小趴菜如何拿下三个大厂offer 📚
8473
7
...
我是今年的高考生
7398
8
...
在携程实习后,我的想法更加坚定了
6819
9
...
阿里在逗我
5721
10
...
乡下人第一次到上海租房,隔壁sexy声音搞的我火气很大
5484
创作者周榜
更多
正在热议
更多
#
我的实习收获
#
24958次浏览
431人参与
#
在国企工作的人,躺平了吗?
#
333257次浏览
3862人参与
#
实习吐槽大会
#
26621次浏览
129人参与
#
商战,最累的是我们
#
12736次浏览
50人参与
#
晒一晒你的工位
#
84296次浏览
299人参与
#
我的租房踩坑经历
#
20751次浏览
238人参与
#
穿越回高考你还会选现在的专业吗
#
18383次浏览
235人参与
#
毕业旅行去哪玩儿
#
1019次浏览
29人参与
#
小厂实习有必要去吗
#
46389次浏览
267人参与
#
求职你最看重什么?
#
69548次浏览
393人参与
#
牛友们,签完三方你在忙什么?
#
94902次浏览
837人参与
#
夸夸我的求职搭子
#
190799次浏览
1891人参与
#
摸鱼打卡站
#
39314次浏览
687人参与
#
携程求职进展汇总
#
530267次浏览
3951人参与
#
产运销实习日记
#
51967次浏览
551人参与
#
打工人锐评公司红黑榜
#
145375次浏览
908人参与
#
网易求职进展汇总
#
101830次浏览
982人参与
#
你小时候最想从事什么职业
#
95488次浏览
1720人参与
#
作业帮求职进展汇总
#
52427次浏览
354人参与
#
高学历就一定能找到好工作吗?
#
47548次浏览
589人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务