2012-06-28 11 views
12

C++では、デフォルトの引数だけを持つコンストラクタは、デフォルトのコンストラクタですか?次のコードで

struct Foo 
{ 
    Foo(int x=0); 
}; 

は、コンストラクタは、デフォルトコンストラクタとしてカウントしていますか?

+1

デフォルトのコンストラクタは、定義していないときにコンパイラによって自動的に生成されます。あなたが定義したからではないと言うでしょう。 – peacemaker

+3

@peacemaker実際には、デフォルトのコンストラクタは引数のないコンストラクタです。 – Matt

+2

@peacemaker:デフォルトでは "デフォルトで呼び出されます。標準では、この用語を後者を参照するために使用します。 –

答えて

18

C++ 98§12.1/ 5 (強調鉱山)

クラスXのデフォルトコンストラクタは引数なしで呼び出すことができるXのコンストラクタです。クラスXにユーザーが宣言したコンストラクターがない場合、デフォルトのコンストラクターが暗黙的に宣言されます。

はい、デフォルトのコンストラクタとしてカウントされます。 See also

+0

私はそれを一度どこかで読んだと思った。説明をありがとう。 – chris

+0

ありがとう!違いがあるかどうかは分かりませんでした。 – panickal

+2

@panickalこの例は変換コンストラクタであり、暗黙の変換も引き続き実行していることに気付くでしょう。 –