首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
暂无评论,快来抢首评~
相关推荐
02-18 17:43
西北农林科技大学 前端工程师
26届前端简历求分析
点赞
评论
收藏
分享
02-17 17:21
中北大学 测试开发
测试开发 - 小天才 - 一面
自我介绍为什么选择测试开发,对于岗位的理解和未来发展方向实习经历具体介绍开发的工具有部署在客户端或者产品上么,或者有开发过相应的 SDK 么有参加过 HiveSQL 或者公共工具的部署么个人博客中的主要内容有哪些有在 AI 方面有相关的研究方向么对于 AI 的应用有什么认识么,AI 对于测试业务有什么帮助么有过实际应用的经验么数据有校验么反问环节:部门情况:研发保障部,软件测试技术科,定位和运动健康业务面试建议:Python 开发相关能力,前端,客户端,云服务AI 应用及理解
查看10道真题和解析
点赞
评论
收藏
分享
01-20 16:20
郑州升达经贸管理学院 Java
求助,今年大四,之前没有过实习,简历投出去都说不合适
离上岸不远了的海螺:
线程不是县城
实习,投递多份简历没人回...
点赞
评论
收藏
分享
02-03 18:36
门头沟学院 测试工程师
半年没实习了又来找实习遇到震撼岗位
对面问我用的什么手机我说苹果对面已读不回了然后发现这个岗位一周7天HR不会以为填信息是回答问题吧?全年无休吗?
点赞
评论
收藏
分享
昨天 16:35
上海交通大学 算法工程师
Redis 的 Zset底层是怎么实现的?
一、面试题简述Redis 里的Zset你用过吗?它既能按照 score 排序,又能按照 member 快速查找,这是怎么做到的?底层到底用了什么数据结构?为什么这样设计?二、面试官想听的这道题本质不是问Zset 用了什么结构,而是在考察:1、你是否能从需求出发推导结构设计2、你是否理解时间复杂度与操作路径的权衡3、你能不能讲清楚为什么不用别的结构面试官真正想听的是你能不能从工程约束推导出 Hash + SkipList 是一种必然,而不是偶然。三、面试回答举例Zset 的核心需求其实很矛盾:第一,它要按 score 有序; 第二,它要支持根据 member 快速查找和更新。这两个需求如果拆开来...
技术必备题库
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
28届Go日常实习简历求牛爷爷锐评
404
2
...
27届实习近一年的年度经历和总结
346
3
...
需要再找一个实习吗
207
4
...
大三无实习
192
5
...
应届生背调
175
6
...
27前端双非找实习
143
7
...
得力嵌入式工程师 一面 面经
140
8
...
民办本JAVA实习,求指导简历
128
9
...
27届求助 意向岗位结构工程师
118
10
...
力扣小子积淀ing
117
创作者周榜
更多
正在热议
更多
#
牛客新年AI问运
#
12614次浏览
163人参与
#
实习教会我的事
#
59664次浏览
455人参与
#
牛客AI体验站
#
17602次浏览
298人参与
#
最难的技术面是哪家公司?
#
66345次浏览
984人参与
#
当你面对裁员会如何?
#
367109次浏览
2924人参与
#
职场上哪些行为很加分?
#
328058次浏览
3634人参与
#
一张图晒一下你的AI员工
#
14292次浏览
178人参与
#
面试之前应该如何准备?
#
219666次浏览
2331人参与
#
找不到实习会影响秋招吗
#
1447429次浏览
13730人参与
#
哪些公司对双非友好
#
208066次浏览
1169人参与
#
九月了,是考研还是就业?
#
88749次浏览
549人参与
#
找实习是选平台还是选业务?
#
45330次浏览
317人参与
#
实习怎么做才有更好的产出
#
33105次浏览
420人参与
#
第一次面试
#
1073505次浏览
13740人参与
#
这份实习,有没有动摇过你的职业方向?
#
1621次浏览
21人参与
#
为了实习逃课值吗?
#
66144次浏览
528人参与
#
工作中,努力重要还是选择重要?
#
261969次浏览
2475人参与
#
毕业季,给职场新人一些建议
#
189420次浏览
2484人参与
#
拿到offer之后,可以做些什么
#
90842次浏览
460人参与
#
本周投递记录
#
848775次浏览
12229人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务