2017-02-25 11 views
0
cppreferenceに

学習C++初期化するための「いいえデフォルトコンストラクタ」Iは、下記(「C++ 11以降の」として値の初期化)が見つかりました:クラスタイプ

1)Tにはデフォルトコンストラクタを持つクラス型の場合またはユーザーが提供または削除したデフォルトのコンストラクタを使用すると、オブジェクトはデフォルトで初期化されます。

2)Tが、ユーザー提供も削除もされないデフォルトのコンストラクタを持つクラス型である場合(つまり、暗黙的に定義されたデフォルトコンストラクタを持つクラスである場合)、オブジェクトはゼロ初期化されます次に、デフォルトではないコンストラクタがある場合は、デフォルトで初期化されます。

...

これは、クラス型が持つことができることを意味します

  • なし。
  • ユーザ提供;
  • が削除されました。
  • 暗黙的に定義されています。
  • がデフォルトです。

デフォルトのコンストラクタです。

デフォルトのコンストラクタが「いいえ」とはどういう意味ですか?クラス型は、少なくとも暗黙的に定義されている(または削除されている)型はありませんか?

答えて

1

デフォルトのコンストラクタの意味は何ですか?クラス型は、少なくとも暗黙的に定義されている(または削除されている)型はありませんか?

ユーザ定義のコンストラクタがある場合、(引数のない)暗黙的に定義されたデフォルトのコンストラクタはありません。

1を宣言する最も簡単な方法は、defaultキーワードを使用することです:

class MyClass { 
public: 
    MyClass(int y); // <<< No default constructor generated 
    MyClass() = default; // <<< Force generation of default constructor 
}; 
0

が暗黙のデフォルトの説明についてはこの回答を参照してください。簡単に言えばhttps://stackoverflow.com/a/12340762/3616833

を、コンストラクタがデフォルトですか引数なしで呼び出すことができます。コンストラクタは、ユーザによって提供されていないが宣言されている/定義されている場合、暗黙的に宣言されています。

すべてのコンストラクタに少なくとも1つの引数が必要な場合は、デフォルトのコンストラクタなしでクラスを宣言/定義できます。

デフォルトのキーワードはデフォルトのコンストラクタを作成しますので、OPの質問に対する答えはありません。

関連する問題