| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 511 人关注过本帖
标题:请教一个关于多态性的问题!!
只看楼主 加入收藏
mitain
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2005-10-11
收藏
 问题点数:0 回复次数:2 
请教一个关于多态性的问题!!
下面的程序的运行结果为什么会是那样的,哪位大虾能给我说说吗?谢谢! # include <iostream.h> class A { public: virtual void call(){cout<<"A::call()\n\n"<<endl;} }; class B:public A { public: void func() { cout<<"B::func()"<<endl; call(); } virtual void call(){cout<<"B::call()\n\n"<<endl;} }; class C:public B { public: virtual void call(){cout<<"C::call()\n\n"<<endl;} }; void main(void) { C my_c; C *mcp=new C; B my_b; cout<<"#1 testing"<<endl; my_c.func(); cout<<"#2 testing"<<endl; ((B *)(&my_c))->func(); cout<<"#3 testing"<<endl; mcp->func(); cout<<"#4 testing"<<endl; my_b.func(); } 运行结果是: #1 testing B::func() C::call() #2 testing B::func() C::call() #3 testing B::func() C::call() #4 testing B::func() B::call()
搜索更多相关主题的帖子: 多态 
2005-10-11 19:09
aolong
Rank: 1
等 级:新手上路
帖 子:248
专家分:0
注 册:2005-10-11
收藏
得分:0 
多态性
第一、谁继承就是谁的
         第一步中显示c::call()而不显示b::call()就是因为C继承了C的函数fun()
第二、变量是谁的就谁的
         第二步中显示c::call()而不显示b::call()就是因为变量是mc_p就是C类型的指针,应该调用C的函数

奋斗之中,朦胧有你,一切已变的那么飘渺虚无...
2005-10-11 19:47
badboy001
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2005-5-19
收藏
得分:0 
恩 恩
2005-10-14 09:57
快速回复:请教一个关于多态性的问题!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014373 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved