2016-08-17 22 views

答えて

7

なりません、あなたは明示的にそのような場合にはデフォルトコンストラクタを提供する必要があります。

(以降C++ 11から)あなたはできますが、クラスFooため、コンパイラが生成するデフォルトコンストラクタを再導入クラス宣言内

Foo() = default;

構文を使用します。正確な等価性については、publicセクションに記入する必要があります。

また、すべてのコンストラクタパラメータにデフォルトの引数を指定すると、はデフォルトコンストラクタになります。

4

いいえ、それは、クラスユーザーに明示的に引数を提供させたいという要点です。あなたはパラメータのデフォルト値を使用する場合

はしかし、それはデフォルトコンストラクタ

class Foo 
{ 
    Foo(bool flag=false); // not a default constructor, but acts the same 
}; 
+0

実際にはデフォルトコンストラクタになります。 – Bathsheba

+0

実際にはデフォルトコンストラクタです。私はメモリから標準を引用しています(私はちょっと離れているかもしれません)。デフォルトのコンストラクタは、パラメータなしで呼び出すことができるコンストラクタです。 – bolov

+0

が正しい。編集しました(当時は 'bool'型、あまりにも多くのPythonを追加しました)) –

0

いいえコンストラクターを定義すると、定義したコンストラクターだけが存在します。デフォルトコンストラクタを保持したい場合は、それを再定義する必要があります。

class MyClass 
{ 
    MyClass(){}; 
. 
. 
. 
}; 
+0

代わりに '= default'表記を考慮してください。 – Bathsheba

+0

これもオプションです。しかし、C++ 11以降でしか利用できません。 – Javi

+1

私は人々がデフォルトで最新のスタンダードを開始することを希望します。 C++ 11の前に、これを代わりに行う必要がありました。 " – bolov

関連する問題