数年前、{}と{0}を使ってPODの初期化にC++の微妙な違いがありました。C++での{}と{0}の間の初期化の差
D3D11_TEXTURE2D_DESC dsd = {};
D3D11_TEXTURE2D_DESC dsd2 = { 0 }:
私は{0}確かにCから継承されたものです、それは{}の両方が、おそらく同じにmemsetにコンパイル時に翻訳され、C++ 11で導入された何か()の呼び出しであることを知っていますが:
memset(&dsd, 0, sizeof(dsd));
しかし、2つのブレース初期化スタイルのうちの1つは、メモリの初期化が整列されていないものでしたが、どんなスタイルが優れているのか気になるのは誰ですか?
さらに進む前に、ゴッドボルトに飛び乗って、これらのことが実際に何をしているのか自分自身で見てください。 D3D11_TEXTURE2D_DESCの代わりにテスト構造を自由に設定してください。 –
'{}'の使用は少なくともC++ 03以来のことです。 – juanchopanza
このページを見てくださいhttp://en.cppreference.com/w/cpp/language/list_initialization –