CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

关于多态的问题

楼主sunf71()2006-07-03 13:41:59 在 C/C++ / C++ 语言 提问

请看如下代码  
  __abstract   __gc   class   a  
  {  
  public:  
      void   method()  
    {  
        Console::WriteLine(S"基类方法");  
      }  
  };  
  __abstract   __gc     class   b:   public   a  
  {  
  public:  
      virtual   void   method()=0;  
  };  
  __gc   class   c:   public   b  
  {  
  public:  
      void   method()  
      {  
          Console::WriteLine(S"派生类方法");      
      }  
  };  
  [目标]:  
  a为基类,b类继承自a,并将method声明为纯虚函数;c类继承自b,实现method  
  [测试代码]:  
  a   *   mya=new   c();  
  c->method();  
  [测试结果]:(期待输出:派生类方法)  
  输出为:基类方法  
  [结论]:失败  
   
  解决方法????应该怎样实现?  
  多谢!!!  
  [注]环境为.net2003托管c++ 问题点数:20、回复次数:8Top

1 楼wanderfox()回复于 2006-07-03 13:55:03 得分 5

a   *   mya=new   c();  
  c->method();  
   
  应该是mya->method吧?  
   
  还有,如果a类的方法method声明为virtual,就会出现你要的结果了Top

2 楼changyanxiao(踏雪无情)回复于 2006-07-03 15:36:19 得分 0

要想实现多态,必须从基类a开始就声明为虚类Top

3 楼jixingzhong(瞌睡虫·星辰)回复于 2006-07-03 16:28:38 得分 5

有点混乱   ...  
   
  纯虚函数作为一个接口函数,  
  应当在最底层被声明,在派生中被实现   ....  
   
  楼主的这种做法....  
  有点不太好吧   ....Top

4 楼jixingzhong(瞌睡虫·星辰)回复于 2006-07-03 16:30:47 得分 0

呵呵,  
  楼主可以把   class   a   的   method   声明为   virtual   的     ...Top

5 楼hqycxy(仇笑雨)回复于 2006-07-03 16:58:08 得分 0

楼主的做法   像出考试题。。。Top

6 楼sunf71()回复于 2006-07-03 18:15:21 得分 0

不好意思写错了,多谢wanderfox朋友!  
  这个问题是在看《head   first   design   patterns》时出现的,在书中decorator模式这一章中,例子程序中就是这样做的,但是书中用的语言是java。Top

7 楼lan_yanjing(露寒)回复于 2006-07-08 10:00:06 得分 5

楼主的做法   像出考试题。。。  
  同意  
   
  按楼主的写法  
  a   *   mya=new   c();  
  c->method();  
  相当于执行a::method,是一个普通的成员函数,没有virtual字是不会去寻找c类的method方法的  
  楼主可以试试这样写  
  b   *   myb   =   new   c   ()   ;  
  b->a::method()   ;  
  b->method   ()   ;  
  结果是   :  
  基类方法   派生类方法Top

8 楼lan_yanjing(露寒)回复于 2006-07-08 10:00:54 得分 5

不好意思,我也写错了,是  
  myb->a::method();  
  myb->method();Top

相关问题

关键词

得分解答快速导航

  • 帖主:sunf71
  • wanderfox
  • jixingzhong
  • lan_yanjing
  • lan_yanjing

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo