オブジェクトを作成するときのC ++の括弧と中括弧の違いは何ですか

V.Wu

オブジェクトを構築するとき()の違いは何{}ですか?

{}はinitializer_listまたは配列のみをサポートする必要があると思いますが、snipの下で実行すると、混乱します。

#include <iostream>
using namespace std;
struct S {
    int v=0;
    S(int l) : v(l) {
    }
};


int main()
{
    S s1(12); // statement1
    S s2{12}; // statement2
    cout << s1.v << endl;
    cout << s2.v << endl;
}

statement1()オブジェクトを構築するための基本的な文法であるため、正しいです。

statement2コンパイルに失敗すると思います。{}配列またはinitializer_list型にのみ使用できると思いますしかし、実際の結果はエラーなしで完全にコンパイルされます。

私は何を間違えますか?

ソンユアンヤオ

の場合S、同じ効果があります。どちらもコンストラクターS::S(int)呼び出してオブジェクトを初期化します。

S s2{12};リストの初期化と見なされます(C ++ 11以降)。S集約型ではないといないstd::initializer_list、とはコンストラクタの撮影を持っていないstd::initializer_list、その後、

前のステージで一致が生成されない場合、のすべてのコンストラクターはT、非ナロー変換のみが許可されるという制限付きで、braced-init-listの要素で構成される引数のセットに対するオーバーロード解決参加します。

そしてあなたはそれを考えました

{}配列またはinitializer_list型にのみ使用できると思います

本当じゃない。リスト初期化の効果は、たとえば、Sが集約タイプの場合、集約初期化が実行されることです。場合Sの専門であるstd::initializer_list、それは次のように初期化されますstd::initializer_listSをとるコンストラクターがある場合std::initializer_list、初期化に使用することが優先されます。詳細についてはリンク先のページを参照してください

PS:直接初期化をS s1(12);実行します

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Pythonの波括弧と角括弧の違いは何ですか?

分類Dev

`a [bc] d`(括弧)と` a {b、c} d`(括弧)の違いは何ですか?

分類Dev

Makefileの括弧$()と中括弧$ {}の構文の違いは何ですか?

分類Dev

Scalaforループの中括弧と括弧の違いは何ですか

分類Dev

括弧付きと括弧なしのPerlサブ宣言の違いは何ですか?

分類Dev

Kotlinを使用したRxJavaでの中括弧と通常の括弧の違いは何ですか

分類Dev

リストに関して角括弧と括弧の違いは何ですか?

分類Dev

C#C#でオブジェクトを作成するときの角括弧([])の使用とは

分類Dev

括弧付きの名前と括弧なしの名前の定義の意味上の違いは何ですか?

分類Dev

括弧付きの関数と括弧のない関数の違いは何ですか

分類Dev

括弧付きの数値と括弧なしの数値の違いは何ですか?

分類Dev

外側の中括弧のないJavaScriptオブジェクトとは何ですか?

分類Dev

Angular2の括弧、括弧、アスタリスクの違いは何ですか?

分類Dev

オブジェクトを定義するときの角括弧は何ですか?

分類Dev

Pythonで角括弧と括弧で囲まれたリストの違いは何ですか?

分類Dev

Pythonで角括弧と括弧で囲まれたリストの違いは何ですか?

分類Dev

Pythonの角括弧とドット表記の違いは何ですか?

分類Dev

bash の角括弧とテスト コマンドの違いは何ですか?

分類Dev

中括弧と括弧のScalaの形式的な違いは何ですか?また、いつ使用する必要がありますか?

分類Dev

PowerShell Get-FileHashの配管と丸括弧の違いは何ですか?

分類Dev

ReactJSで関数を定義するときに、括弧のみを使用することと、括弧内で中括弧のみを使用することの違いは何ですか?

分類Dev

Cのコンマと括弧および中括弧の関係は何ですか?

分類Dev

ここで中括弧と括弧の初期化に違いがあるのはなぜですか?

分類Dev

JavaScriptで新しいオブジェクトを作成するときに、括弧と新しいキーワードが必要になるのはいつですか。

分類Dev

括弧と比較した場合の違いは何ですか:WHERE(a、b)=(1,2)

分類Dev

tclコマンドの中括弧と二重引用符の違いは何ですか

分類Dev

ReactまたはJSXで折り返す中括弧と括弧の違い

分類Dev

新しいオブジェクトを作成するときに、クラス名の後に角括弧が配置されるのはなぜですか?

分類Dev

PythonのNumPyで配列を作成するときの角括弧と括弧の違い

Related 関連記事

  1. 1

    Pythonの波括弧と角括弧の違いは何ですか?

  2. 2

    `a [bc] d`(括弧)と` a {b、c} d`(括弧)の違いは何ですか?

  3. 3

    Makefileの括弧$()と中括弧$ {}の構文の違いは何ですか?

  4. 4

    Scalaforループの中括弧と括弧の違いは何ですか

  5. 5

    括弧付きと括弧なしのPerlサブ宣言の違いは何ですか?

  6. 6

    Kotlinを使用したRxJavaでの中括弧と通常の括弧の違いは何ですか

  7. 7

    リストに関して角括弧と括弧の違いは何ですか?

  8. 8

    C#C#でオブジェクトを作成するときの角括弧([])の使用とは

  9. 9

    括弧付きの名前と括弧なしの名前の定義の意味上の違いは何ですか?

  10. 10

    括弧付きの関数と括弧のない関数の違いは何ですか

  11. 11

    括弧付きの数値と括弧なしの数値の違いは何ですか?

  12. 12

    外側の中括弧のないJavaScriptオブジェクトとは何ですか?

  13. 13

    Angular2の括弧、括弧、アスタリスクの違いは何ですか?

  14. 14

    オブジェクトを定義するときの角括弧は何ですか?

  15. 15

    Pythonで角括弧と括弧で囲まれたリストの違いは何ですか?

  16. 16

    Pythonで角括弧と括弧で囲まれたリストの違いは何ですか?

  17. 17

    Pythonの角括弧とドット表記の違いは何ですか?

  18. 18

    bash の角括弧とテスト コマンドの違いは何ですか?

  19. 19

    中括弧と括弧のScalaの形式的な違いは何ですか?また、いつ使用する必要がありますか?

  20. 20

    PowerShell Get-FileHashの配管と丸括弧の違いは何ですか?

  21. 21

    ReactJSで関数を定義するときに、括弧のみを使用することと、括弧内で中括弧のみを使用することの違いは何ですか?

  22. 22

    Cのコンマと括弧および中括弧の関係は何ですか?

  23. 23

    ここで中括弧と括弧の初期化に違いがあるのはなぜですか?

  24. 24

    JavaScriptで新しいオブジェクトを作成するときに、括弧と新しいキーワードが必要になるのはいつですか。

  25. 25

    括弧と比較した場合の違いは何ですか:WHERE(a、b)=(1,2)

  26. 26

    tclコマンドの中括弧と二重引用符の違いは何ですか

  27. 27

    ReactまたはJSXで折り返す中括弧と括弧の違い

  28. 28

    新しいオブジェクトを作成するときに、クラス名の後に角括弧が配置されるのはなぜですか?

  29. 29

    PythonのNumPyで配列を作成するときの角括弧と括弧の違い

ホットタグ

アーカイブ