クラス内イニシャライザの構文制限
C 11 では、クラス内イニシャライザは等号 (=) またはカーリー記号のみを使用できます。中かっこ {} はメンバーに値を割り当てます。なぜそうなるのですか?
曖昧さの軽減
中かっこ構文は、コードの明確な解釈を強制します。次の例を考えてみましょう:
class Example { struct Inner; int member; int conflicting(Inner); // Function declaration or member initialization? };
中括弧の制限がないと、コード スニペットがあいまいになる可能性があります。最初の行は、関数宣言またはかっこを使用したメンバーの初期化として解釈できます。
class Example { struct Inner; int member; int conflicting{Inner}; // Clearly a member initialization };
中括弧は、競合しているのは Inner の値に初期化されたメンバーであることを明確にしています。
さらなる明確さ
中括弧を使用すると、さらに明確になります。メンバーの宣言と初期化を分離します。これにより、読みやすさが向上し、誤解の可能性が減ります。
以上がC 11 のクラス内イニシャライザが `=` と `{}` に制限されているのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。