c++踩坑——抽象类的派生类实例化


 

如有如下抽象基类A

class A{
public:
virtual int compare(T) = 0;

virtual void display(T) = 0;
};

派生类B

class B :public A{
public:
    B(int s = 0){
        m = s;
    }
    int get(){
        return m;
    }
   protected:
    int m;
};

此时派生类B里虽然没有纯虚函数,但仍然是抽象类。

 

重定义函数compara

 
 
class B :public A{
public: B(int s = 0){ m = s; } int get(){ return m; }
   
  int compare(Score s){
          if (m_iScore >s.m_iScore){    return 1;    } else if (m_iScore ==s.m_iScore ){ return 0; } else{ return -1; } }
 protected: int m; 
};

此时,虽然有一个纯虚函数被定义,但B仍是抽象类

结论:抽象类的派生类有任何一个纯虚函数没有实现,那么不管其他做的再多,这个类仍然是一个抽象类。故虚基类的派生类在有纯虚函数未被定义前不能进行实例化。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM