首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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-29 10:36
华为_系统工程师
第 26 题:多 Agent 系统(Multi-Agent System)及其优势
第 26 题:多 Agent 系统(Multi-Agent System)及其优势 题目 什么是多 Agent 系统(Multi-Agent System)?其优势是什么? 一、什么是多 Agent 系统? 多 Agent 系统(Multi-Agent System, MAS) 指由多个 Agent 共同协作完成任务的架构:每个 Agent 具备一定的感知、决策与执行能力(通常以 LLM 为核心),通过任务分配、通信、协调完成单 Agent 难以高效完成的复杂目标。 与单 Agent 的对比:单 Agent 在一个大脑内完成推理与工具调用;多 Agent 则把角色、专长或子任务拆分到不同 Ag...
Ai Agent:面试3...
点赞
评论
收藏
分享
04-28 18:08
内蒙古医科大学 Java
Java面试官视角:大部分人一开口就知道过不过
前段时间吃饭,跟 mentor 聊到现在毕业生找工作难这件事。他顺口说了一句话,我印象特别深: 有些面试,5分钟内其实就差不多知道结果了。甚至有的校招面试,更直接:候选人一开口,挂还是过,他心里基本就有数了。说实话,我一开始听到这句,还有点不服。我当时心里想,哪有这么夸张,大家不都得聊一会儿、问几轮,才能看出来吗?但回头看我去年那 40+ 场后端面试,我发现这话真不是吓人的。很多时候,不是你答了多久才暴露问题,是你一开口,面试官就已经听出来你对这个东西到底懂多少。两次尴尬面试经历我刚开始面试那阵子,其实就是最典型的“背过一点,但没真的懂”。后端技术栈深度不够,广度也不够,再加上人一紧张,就特别...
查看1道真题和解析
点赞
评论
收藏
分享
不愿透露姓名的神秘牛友
03-30 21:35
网易互娱,草台班子这一块
爱蜜莉雅碳劝退测开:
裁员裁大动脉了
点赞
评论
收藏
分享
04-02 12:33
中国矿业大学 Java
快手一面
面试官史上无敌温柔,也很专业,之前面字节都给我面到怀疑人生了,面经不分先后,不完整相互介绍聊聊项目秒杀券怎么实现分布式锁,可重入,锁超时消息队列的消息挤压问题可以设置很多consumer吗消息队列怎么保证消息可靠redis的数据类型大key怎么解决,有什么危害多线程的并发工具有哪些concurrenthashmapunsafe了解吗算法:全排列mysql主键什么类型为什么自增索引的底层原理是什么自增除了方便索引还有什么用
查看16道真题和解析
点赞
评论
收藏
分享
04-28 17:08
西北农林科技大学 Java
字节后端暑期实习一面凉经
一、项目 1、Redis 全局唯一 ID,为什么生成这个 ID,这个 ID 的含义是什么(疯狂追问),这个 ID 有什么用(拷打追问:1、为什么不直接再 MySQL 中用自增 ID(因为我在 redis 中用的自增 ID 来唯一标识)) 2、你是如何解决 Redis 解决超卖的思路(Lua 脚本 + 预扣库存(消息队列)+ 乐观锁(乐观锁我回答可以用库存扣减大于 0、还可以用一个字段来标识这行数据来判断是否有并发同时扣减问题,然后就一直追问这个字段是什么)) 3、Redis 消息发送失败的处理方式 4、推送/拉取模式,为什么选择推模式(拷打,先说的用户少所以用推,追问粉丝量大怎么办,我说推拉结...
查看18道真题和解析
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
有人知道,招银网络后端春招还有第二批吗?大概什么时候
0
2
...
历时2个月暑期终于结束了
0
3
...
选offer求助及未来发展建议
0
4
...
双非鼠鼠大结局-三方已签
0
5
...
互联网只适合竭泽而渔
0
6
...
bg四非大学本暑期情况
0
7
...
暑期实习
0
8
...
offer 帮选
0
9
...
211本嵌软真没人要...
0
10
...
字节日常和暑期好像没什么区别
0
创作者周榜
更多
正在热议
更多
#
这个offer值得去吗?
#
13699次浏览
151人参与
#
金三银四,你的春招进行到哪个阶段了?
#
35615次浏览
332人参与
#
联宝杯大学生创新大赛,你的技术值得产业级答案
#
46113次浏览
509人参与
#
如果春招能重来,我会___
#
15369次浏览
182人参与
#
Prompt分享
#
77327次浏览
1274人参与
#
除了线上,还能去哪些地方投简历
#
8768次浏览
103人参与
#
校招第一份工作你干了多久?
#
152904次浏览
640人参与
#
硬件人秋招进展
#
292097次浏览
4042人参与
#
你觉得实习能学到东西吗
#
153264次浏览
1480人参与
#
搜狐工作体验
#
6814次浏览
54人参与
#
反问环节如何提问
#
141407次浏览
2740人参与
#
想做Agent可以做哪些岗位?
#
13059次浏览
416人参与
#
面试官拷打AI项目都会问什么?
#
12296次浏览
422人参与
#
招银网络科技(深圳)有限公司成都分公司笔试
#
6085次浏览
25人参与
#
你觉得最好用的AI编程工具是_
#
4777次浏览
97人参与
#
哔哩哔哩笔试
#
42343次浏览
166人参与
#
军工所铁饭碗 vs 互联网高薪资,你会选谁
#
14073次浏览
80人参与
#
你实习是赚钱了还是亏钱了?
#
127597次浏览
715人参与
#
大厂还是考编
#
134670次浏览
1399人参与
#
非技术岗简历怎么写
#
338737次浏览
3301人参与
#
实习第一天,你在干什么
#
9194次浏览
111人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务