如有如下抽象基類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仍是抽象類
結論:抽象類的派生類有任何一個純虛函數沒有實現,那么不管其他做的再多,這個類仍然是一個抽象類。故虛基類的派生類在有純虛函數未被定義前不能進行實例化。