博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

让我懂得 多态性 的网友的帖子

Posted on 2008-09-10 17:18  浪端之渡鸟  阅读(352)  评论(1)    收藏  举报

抽象类通常用定义方法就是该类中定义纯虚函数。  
  使用私有类型构造函数太常见了,其不是所谓抽象类。任何希望所有的对象都必须在堆中生成都会这样作。  
   
  抽象类主要用于接口,也可以理解为类的一种通讯交互方式。接口的概念在COM等高级运用中运用广泛。也是C++所谓的第二道门槛。  
  class   interfacehavefun  
  {  
        virtural   havefun()=0;  
  }  
  interfacehavefun就是一个纯virtural   类,你不能生成它的对象。但使用它的指针就可以指向它的子类。  
  也就是说这样是错误的。  
  interfacehavefun   tmp;//定义错误  
  interfacehavefun   *tmp   =   new   interfacehavefun();   //定义错误  
  class   A:public   interfacehavefun  
  {  
        havefun()       //不定义virtural   其也是virtural   函数  
        {  
                std::cout<<"A   have   fun"<<std::endl;  
        };  
  }  
   
  class   B:public   interfacehavefun  
  {  
        havefun()  
        {  
                std::cout<<"B   have   fun"<<std::endl;  
        };  
  }  
  你可以这样使用接口:  
  interfacehavefun   *tmp   =   new   A()  
  tmp->havefun()  
  结果:  
  A   have   fun  
   
  interfacehavefun   *tmp   =   new   B();  
  tmp->havefun();  
  B   have   fun  
   
  不要小看这种方法,熟练的使用它可以写出优美的程序。