2016-08-10 8 views
1

次のプログラム例を考えてみましょう。定義内の構造体メンバ初期化の用語は何ですか?

#include <stdio.h> 

struct FooBar { 
    bool test{true}; // What is this syntax called? 
}; 

int main() { 
    FooBar bar; 
    printf("%d\n", bar.test); 
} 

コメントが付いた行の初期化の構文の名前は何ですか?

+1

[統一初期化](http://programmers.stackexchange.com/questions/133688/is-c11-uniform-initialization-a-replacement-for-the-old-style-syntax).... – WhiZTiM

+0

検索、クラス内のメンバーの初期化/初期化は、おそらくあなたに役立つでしょう。しかし、それは「聖なる基準」という言葉ではありません。 –

答えて

2

あなたの質問が具体的に何を想定しているかは、構文や機能がすぐに分かりません。

私はあなたの質問の範囲を正しく理解していれば、この機能は慎重に「ブレスまたは同等イニシャライザ非静的データメンバーです」と呼びます。はい、全部です。

したがって、構文は中括弧または同等の初期設定です。そして、あなたの例では非静的なデータメンバで使用されます。

+0

私はそのような初期化のセマンティクスのためにGoogleにできるように、用語を探していました。単に "構造体定義のメンバ初期化"を検索するだけでは不十分です。 – merlin2011

2

非スタティックデータメンバーの場合は、ブレースまたは同等イニシャライザと呼ばれています。これは、デフォルトのメンバー初期化子(thanks P0134)として知られています。

+0

文法的には、「ブレースまたは同等の初期化子」をNSDM以外のものに適用できます。技術的には以前は名前がなかった。 –

1

文法的に、初期化子がブレース・オア・イコール初期化子ですが、それは言って面倒であり、この構造は今も、適切な専門用語があります。デフォルトのメンバー初期化子(参照:[クラス。 mem]/8)。この用語はC++ 14の後に導入され、現在作業中のドラフトに入っています。

関連する問題