2013-07-29 54 views
-3

我想問,沒有實現虛函數有問題嗎?例如:沒有實現虛函數

class Function { 
public: 
    virtual ~Function() {} 
    virtual double value(double x) const = 0; 
    virtual Function* clone() const = 0; 
protected: 
    virtual void print(ostream& os) const = 0; 
    friend ostream& operator<<(ostream& os, const Function& f); 
}; 

在函數的派生類中,如果例如克隆未實現,它是否會給出編譯錯誤?或者如果我嘗試調用derived.clone(),它會是一個運行時錯誤?

+8

「它會給編譯錯誤嗎?」你爲什麼不嘗試並找出答案。 –

回答

6

如果您嘗試實例化一個具有未實現的純虛函數(包括繼承的函數)的類,將會出現編譯錯誤。

1

編譯創建該類或其派生類的實例的代碼時會出錯:error C2259: cannot instantiate abstract class