2 つのオブジェクトが 1 行で宣言されている場合、それらはどのような順序で構築されますか? 質問する

2 つのオブジェクトが 1 行で宣言されている場合、それらはどのような順序で構築されますか? 質問する

クラスが次のように定義されているとします

class A {
//.....
};

そして今、私は2つのオブジェクトを作成しています

A a,b;

aおよび はどのような順序でb作成されますか? 標準で定義されていますか?

ベストアンサー1

8 つの宣言子 [dcl.decl] 3 から:

宣言内の各 init-declarator は、それ自体が宣言内にあるかのように個別に分析されます。

さらにこうも言う

複数の宣言子を持つ宣言は、通常、それぞれが 1 つの宣言子を持つ対応する宣言のシーケンスと同等です。つまり、 はT D1, D2, ... Dn;通常、 が decl-specifier-seq で、それぞれが init-declarator である と同等ですT D1; T D2; ... T Dn;T宣言子Diの 1 つによって導入された名前が decl-specifiers によって使用される型名を隠蔽する場合、例外が発生します。そのため、同じ decl-specifiers が後続の宣言で使用されても同じ意味を持ちません。

左から右に構築されていると言えます。

おすすめ記事