我得到錯誤在簡單的C++繼承
error: no matching function for call to 'Base::Base()'
代碼
class Base {
private:
char *field;
public:
Base(char *c){
field = c;
}
};
class Derived : public Base {
public:
Derived(char *c){}
};
錯誤,只要我添加
Base() {}
構造消失。爲什麼C++編譯器嚴格要求沒有參數的構造函數Base()
?如果創建一個沒有參數的Base
對象會有什麼意義?
P.S.舉例來說,我不具備類似的Java代碼相同的錯誤,因爲我必須添加
super("")
爲Derived
構造體的第一個語句。這真的很合理。
「?如果不帶參數創建的基本對象是沒有意義的什麼?」那麼你的「派生」類是沒有意義的。 – 2013-05-10 16:44:42
「*如果創建不帶參數的Base對象會有什麼意義?*」那麼,不要那樣做? – 2013-05-10 16:47:24
在發佈這個混亂的HTML時,你在想什麼?如果你給它一個機會,Stackoverflow處理語法突出顯示非常好... – filmor 2013-05-10 16:48:11