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