我的問題很簡單。我們什麼時候需要一個默認的構造函數? 請參考下面的代碼:我們什麼時候需要一個默認構造函數?
class Shape
{
int k;
public:
Shape(int n) : k(n) {}
~Shape() {}
};
class Rect : public Shape
{
int l;
public:
Rect(int n): l(n)
{} //error C2512: 'Shape' : no appropriate default constructor available
~Rect() {}
};
爲什麼編譯器不要隱式的類矩形產生零參數的默認構造函數?根據我的知識,如果一個類(Rect)從具有默認構造函數(隱式生成或顯式提供)的另一個類(Shape)派生,則默認構造函數應該由編譯器生成。
構建Rect對象並使用它的部分在哪裏?可能你創建它像'Rect rec;'它需要一個默認的構造器。 – RvdK 2011-03-31 11:17:52
IIRC如果你沒有指定一個構造函數,編譯器會爲你創建一個默認的構造函數。但是如果你指定一個,它只會有一個。 – RvdK 2011-03-31 11:19:19
ctor ==構造函數...... ahhhh! – 2011-03-31 11:20:15