关于继承的问题

zzhjssz 2008-12-12 04:38:13
现在有若干种节点类型B,C,D他们继承了父类A,在实际应用的时候开始不知道节点的类型,要根据输入判定他的节点类型。在函数void fun1(A* node),如果把建好的B node1; C node2等传进去的时候是不是自动被转化成父类A了啊,是不是在函数fun1中node就不能使用子类里面的函数了呢?
如果要改怎么改呢?
...全文
88 10 打赏 收藏 转发到动态 举报
写回复
用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*)node2fun(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
  • 打赏
  • 举报
回复
可以使用啊,这个就是多态

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧