2011-02-08 7 views

答えて

11

はい、もちろん可能です。引数を必要としないコンストラクタは、デフォルトのコンストラクタです。

+1

まあ、クラスA {public:A(){/ *あなたの体はここに* /}}; –

+0

@ジェームズ:私は確かにしません*私の体は '公開'に表示されません! – fredoverflow

+2

@FredOverflow:あなたは、その人の身体が公開されるべきプログラマーのようなものがあるかのように言います。私は形をしています - 「丸い」は形ですね。 –

0

コンストラクターは、クラスのメンバーを初期化するために使用されます。だから、確かにどんなコンストラクタもボディを持つことができます。自分自身にコンストラクタを提供することで、デフォルトコンストラクタにちょうど乗っています。

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

はいデフォルトのコンストラクタ(つまり、パラメータを持たないコンストラクタ)は、他のコンストラクタと同じようにボディを持つことができます。これは "デフォルト"のコードを初期化するのに適しています。メンバ変数を適切な値に設定します。おそらくポインタをnullに設定するか、コンポーネントオブジェクトを割り当てます。

おそらく、「デフォルト」という言葉が混乱の原因ですか?特定のパラメータなしで呼び出されるという点ではデフォルトですが、定義がない場合はデフォルトである必要はありません。

1

デフォルトコンストラクタを明示的に指定する必要はありません。しかし、先に進んで明示的に実装することをお勧めします。このようにして、デフォルトの動作に頼らずに、本当に必要なものになります。

パブリックのデフォルトコンストラクタを実装する場合は、空であっても確実にボディが必要です。

場合によっては、保護されたまたは個人用のctorを持っていても問題ありません。 ctorがプライベート(非表示のコンストラクタと呼ばれます)の場合、ctorはprivateであるため、呼び出すことができないため、関数本体がない場合はokです。