2011-02-08 37 views

回答

11

是的,當然可以。任何不需要參數的構造函數都是默認的構造函數。

+1

是的,就像這樣簡單:class A {public:A(){/ * your body here * /}}; – 2011-02-08 20:15:53

0

構造函數用於初始化類的成員。所以,任何構造函數都可以有一個body。通過爲自己提供一個構造函數,你就可以使用默認的構造函數。

class foo 
{ 
    int x ; 
    public: 
     foo() // default constructor 
     { 
      x=10; // How ever you can achieve this with initializer lists too. 
     } 
}; 
1

是的缺省構造函數(即沒有任何參數的構造函數)可以像任何其他構造函數一樣擁有一個主體。這是放置「默認」初始化代碼的好地方。將成員變量設置爲合理的值。也許將指針設置爲null或分配組件對象。

也許「默認」這個詞是造成混淆的原因?在沒有任何特定參數的情況下調用是默認的,如果沒有定義,則不一定是默認參數。

1

不需要顯式指定默認構造函數。然而,繼續前進並明確實現一個是一個好習慣,這樣您就不會依賴默認行爲來達到您真正想要的效果。

如果你確實實現了一個公共的默認構造函數,它肯定應該有一個body,即使它是空的。

在某些情況下,可以擁有受保護的或私人的ctor。如果ctor是私有的(被稱爲隱藏構造函數),ctor是私有的,如果它沒有函數體,因爲它永遠不會被調用,所以它是可以的。