コンストラクタをに明示的に定義して、デフォルトのコンストラクタを使用せずに引数を指定すると、デフォルトのコンストラクタが作成されますか?引数でコンストラクタを明示的に定義すると、デフォルトのコンストラクタが作成されますか?
ありがとうございました!
コンストラクタをに明示的に定義して、デフォルトのコンストラクタを使用せずに引数を指定すると、デフォルトのコンストラクタが作成されますか?引数でコンストラクタを明示的に定義すると、デフォルトのコンストラクタが作成されますか?
ありがとうございました!
なりません、あなたは明示的にそのような場合にはデフォルトコンストラクタを提供する必要があります。
(以降C++ 11から)あなたはできますが、クラスFoo
ため、はコンパイラが生成するデフォルトコンストラクタを再導入クラス宣言内
Foo() = default;
構文を使用します。正確な等価性については、public
セクションに記入する必要があります。
また、すべてのコンストラクタパラメータにデフォルトの引数を指定すると、はデフォルトコンストラクタになります。
いいえ、それは、クラスユーザーに明示的に引数を提供させたいという要点です。あなたはパラメータのデフォルト値を使用する場合
はしかし、それはデフォルトコンストラクタ
class Foo
{
Foo(bool flag=false); // not a default constructor, but acts the same
};
http://en.cppreference.com/w/cpp/language/default_constructor – Mat