社区
C++ 语言
帖子详情
关于继承的问题
zzhjssz
2008-12-12 04:38:13
现在有若干种节点类型B,C,D他们继承了父类A,在实际应用的时候开始不知道节点的类型,要根据输入判定他的节点类型。在函数void fun1(A* node),如果把建好的B node1; C node2等传进去的时候是不是自动被转化成父类A了啊,是不是在函数fun1中node就不能使用子类里面的函数了呢?
如果要改怎么改呢?
...全文
92
10
打赏
收藏
关于继承的问题
现在有若干种节点类型B,C,D他们继承了父类A,在实际应用的时候开始不知道节点的类型,要根据输入判定他的节点类型。在函数void fun1(A* node),如果把建好的B node1; C node2等传进去的时候是不是自动被转化成父类A了啊,是不是在函数fun1中node就不能使用子类里面的函数了呢? 如果要改怎么改呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zzhjssz
2008-12-12
打赏
举报
回复
我试试
xtting_8984313
2008-12-12
打赏
举报
回复
他本来是什么就是什么。
前提是你使用的是指针,而且必要的函数应该virtual.
hhyttppd
2008-12-12
打赏
举报
回复
他本来是什么就是什么。
zzhjssz
2008-12-12
打赏
举报
回复
如果这样是不是就能用了?
A* node1=new B();
push(node1);
A* node2= (A*)pop();//这里不用A* node2=(B*)pop()是因为节点类型太多了
node2= (B*)node2
fun(node2);
zzhjssz
2008-12-12
打赏
举报
回复
也就是说:
A* node1=new B();
push(node1);
A* node2= (A*)pop();//这里不用A* node2=(B*)pop()是因为节点类型太多了
fun(node2);
在fun里还能使用node2在子类B中的方法?
hhyttppd
2008-12-12
打赏
举报
回复
不会。。。
zzhjssz
2008-12-12
打赏
举报
回复
如果把这些node入栈,在弹出栈的时候把类型设为 node=(A*)pop() 这时候的node是不是被转化为父类了?
zzhjssz
2008-12-12
打赏
举报
回复
fun里都做node的处理,比如说是处理1,每个子类有自己不同的处理1的方法和实现,也就说所有节点的处理过程一样,但是具体实现不一样
hhyttppd
2008-12-12
打赏
举报
回复
1 你可以在A里加一个字段,记下每个子类的类型,然后在fun1里强制转换为子类,则调用子类的函数
2 fun里要调用每一个子类特有的函数,你用fun处理什么呢?
kingteng
2008-12-12
打赏
举报
回复
可以使用啊,这个就是多态
【C++】
继承
详解,菱形
继承
问题
本文详细介绍了C++中的
继承
概念,包括公共
继承
、保护
继承
和私有
继承
的比较,以及赋值兼容规则。重点讨论了同名隐藏现象,并通过实例展示了子类对象的构造过程。此外,文章还深入探讨了菱形
继承
带来的数据冗余和二义性
问题
,并提出虚拟
继承
作为解决方案,解释了虚拟
继承
与普通
继承
的区别,以及如何通过虚基表解决二义性
问题
。
菱形
继承
问题
在C++和Qt中,多重
继承
会导致菱形
继承
问题
,出现二义性和内存布局
问题
。在Qt中,不建议直接多重
继承
有
继承
关系的类,可通过组合实现类似功能,避免菱形
继承
问题
。若确实需要
继承
,可直接
继承
,无需同时
继承
多个类,以保持代码清晰和可维护。
Java中的多重
继承
问题
本文探讨了Java中的
继承
机制,包括单级、多级
继承
以及为何Java不支持多重
继承
的原因。Java通过单一
继承
避免了多重
继承
可能导致的类关系模糊和钻石
问题
,转而采用接口实现多重
继承
的效果。示例代码展示了如何通过
继承
创建类层次结构,并解释了接口在提供多重
继承
功能方面的作用。
C++多重
继承
相关
问题
本文详细阐述了C++中多
继承
的二意性
问题
,包括名字查找过程、菱形
继承
问题
及解决方案。重点讨论了普通多
继承
、私有、公共和受保护
继承
的区别,以及如何通过虚
继承
来解决多
继承
导致的空间浪费、构造函数调用冲突等
问题
。
C++ 中的虚
继承
:解决菱形
继承
问题
的关键
本文围绕C++中的虚
继承
展开,介绍了其用于解决多重
继承
中的菱形
继承
问题
。菱形
继承
会导致数据重复存储和不一致性,而虚
继承
保证基类成员只有一个副本。文中阐述了虚
继承
的语法、工作原理、应用场景,也指出了构造顺序、性能开销等注意事项,助开发者构建高效C++程序。
C++ 语言
65,211
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章