首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
暂无评论,快来抢首评~
相关推荐
04-16 17:20
黑龙江工商学院 物流经理
找工作
大家好 我是交通运输专业 当过两年兵 适合什么工作
我的求职进度条
点赞
评论
收藏
分享
04-15 20:28
已编辑
中国传媒大学 数据分析师
AI时代,还有必要刷LeetCode吗?
结论:要刷,但不是死记硬背地刷;是为了练内功、过面试、驾驭AI,不是为了背题。一、先说现实:大厂面试,还是要考 校招/应届生:必须刷。字节、腾讯、阿里、微软、亚马逊,算法题依然是筛选门槛,不刷基本拿不到offer。 社招13年:高频考。中等难度为主,考思路、复杂度、边界处理,不是纯背诵。 社招5年+:看团队。偏架构/业务的少考纯算法,但基础题、复杂度分析依然常见。 AI/算法岗:必刷。LeetCode是基础门槛,和AI算法本身无关,但大厂筛选就认这个。 二、AI能写代码,为什么还要刷?1. AI写的是代码,你要懂的是“对错与好坏”AI能秒出解,但你得看得懂: 时间/空间复杂度对不对 有没有边...
点赞
评论
收藏
分享
04-14 12:52
已编辑
杭州电子科技大学 C++
27届找实习
三月底投到现在至今0约面,是哪里出了问题,是背景问题还是简历问题呢希望大佬指点一下改了一版新的,求大佬们看看
Luxlord:
哈哈哈我以为只有java这么逆天,杭电爷的c嘎嘎也是
点赞
评论
收藏
分享
不愿透露姓名的神秘牛友
03-20 12:46
27届一段大厂现在零面试
是简历有什么问题吗,求大佬指点要玉玉了
瘦嘟嘟右卫门:
百度文库网盘的暑期也没约面吗
点赞
评论
收藏
分享
04-16 08:58
广西大学 算法工程师
京东 AI应用开发(后端) 一面(JDY)
1. 做一下自我介绍2. 讲一下你做过的系统架构,别只说用了哪些中间件架构最好按数据流讲,而不是按技术名词堆。入口层是网关、鉴权和限流,业务层负责请求编排、规则判断和状态推进,异步层用 MQ 解耦高峰流量和补偿任务,存储层通常拆成 MySQL、Redis、检索索引和对象存储,旁路再挂监控、日志、配置中心和任务调度。真正有价值的是你能指出瓶颈会出现在哪里,比如检索召回抖动、缓存热点倾斜、下游依赖变慢、消费积压或者数据库回查索引失效。3. RAG 的原理你怎么讲,真正落地时它在系统里承担什么角色RAG 不是“检索一下再回答”这么简单,它本质上是把外部知识注入生成过程,降低模型纯参数记忆带来的不确定...
京东一面410人在聊
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
27届导师不放实习,硬刷五段大厂
1.1W
2
...
字节二面面试官迟到并且打断自我介绍
6458
3
...
大厂实习真的很累....
3541
4
...
滴滴一面agent
3189
5
...
滴滴27届Java一面🈚️手撕
2829
6
...
字节前端一面已过✅
2805
7
...
游戏行业真是区完了
2783
8
...
0实习拿到了大厂暑期✌️
2407
9
...
多益网络三面
2334
10
...
27届拼多多三面难度好大。。
2279
创作者周榜
更多
正在热议
更多
#
你简历上最心虚的一句话
#
5634次浏览
32人参与
#
哪些AI项目值得做?
#
971次浏览
31人参与
#
华泰星战营,提前锁定校招offer
#
7110次浏览
306人参与
#
你知道最慷慨和最抠的公司分别是
#
1280次浏览
22人参与
#
简历上如何体现你的“AI”能力?
#
1230次浏览
31人参与
#
实习时最怕听到的一句话
#
1201次浏览
22人参与
#
找不到大厂实习可以去小厂吗?
#
1716次浏览
23人参与
#
没有面试的日子里,你在做什么
#
1366次浏览
26人参与
#
考公VS就业,你怎么选?
#
100506次浏览
530人参与
#
卷__卷不过你们,只能卷__了
#
60528次浏览
765人参与
#
哪些公司对双非友好
#
230774次浏览
1245人参与
#
国央企笔面经互助
#
196620次浏览
1234人参与
#
工作丧失热情的瞬间
#
388440次浏览
2581人参与
#
华为池子有多大
#
174736次浏览
914人参与
#
你认为哪些项目算烂大街?
#
89302次浏览
659人参与
#
你今年的保底offer是哪家
#
187463次浏览
757人参与
#
商战,最累的是我们
#
31832次浏览
99人参与
#
机械笔面试考察这些知识点
#
18103次浏览
126人参与
#
字节7000实习来了,你投了吗?
#
45461次浏览
359人参与
#
第一份工作应该选择高薪还是大平台
#
221469次浏览
1054人参与
#
26届春招投递记录
#
5490次浏览
56人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务