社区
C++ 语言
帖子详情
关于继承的问题
zzhjssz
2008-12-12 04:38:13
现在有若干种节点类型B,C,D他们继承了父类A,在实际应用的时候开始不知道节点的类型,要根据输入判定他的节点类型。在函数void fun1(A* node),如果把建好的B node1; C node2等传进去的时候是不是自动被转化成父类A了啊,是不是在函数fun1中node就不能使用子类里面的函数了呢?
如果要改怎么改呢?
...全文
88
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中,不建议直接多重
继承
有
继承
关系的类,可通过组合实现类似功能,避免菱形
继承
问题
。若确实需要
继承
,可直接
继承
,无需同时
继承
多个类,以保持代码清晰和可维护。
用虚
继承
解决多重
继承
造成的
问题
本文探讨了C++中多
继承
导致的
问题
,特别是在电话类的实例中,展示了如何使用虚
继承
来解决重复基类成员的
问题
。
C++多重
继承
相关
问题
本文详细阐述了C++中多
继承
的二意性
问题
,包括名字查找过程、菱形
继承
问题
及解决方案。重点讨论了普通多
继承
、私有、公共和受保护
继承
的区别,以及如何通过虚
继承
来解决多
继承
导致的空间浪费、构造函数调用冲突等
问题
。
C++ 中的虚
继承
:解决菱形
继承
问题
的关键
本文围绕C++中的虚
继承
展开,介绍了其用于解决多重
继承
中的菱形
继承
问题
。菱形
继承
会导致数据重复存储和不一致性,而虚
继承
保证基类成员只有一个副本。文中阐述了虚
继承
的语法、工作原理、应用场景,也指出了构造顺序、性能开销等注意事项,助开发者构建高效C++程序。
C++ 语言
65,210
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章