C 11 では、クラス内初期化子が導入されており、これにより、メンバー変数をクラス定義内で直接初期化できるようになります。ただし、これらの初期化子は特定の構文規則に従う必要があります。
質問:
クラス内初期化子で等号 (=) または波線のいずれかを使用することが義務付けられているのはなぜですかブレース({})?
答え:
この要件は、潜在的な構文の曖昧さを排除するために役立ちます。
次の例を考えてみましょう:
class BadTimes { struct Overloaded; int Overloaded; // Legal, but unusual. int confusing(Overloaded); // <-- Ambiguous line };
問題のある行は 2 つに解釈される可能性があります方法:
このあいまいさは、両方のメソッドを示すかっこを使用しているために発生します。
この混乱を解決するために、C 11 ではクラス内初期化子に中かっこの使用を義務付けています。これは、紛らわしいものがメンバー変数であることを明示的に示しています:
class BadTimes { struct Overloaded; int Overloaded; // Legal, but unusual. int confusing{Overloaded}; // <-- Clear initialization };
したがって、クラス内初期化子は、構文の誤解を防ぎ、コードの可読性を確保するために等号または中括弧を使用する必要があります。
以上がC のクラス内イニシャライザで `=` または `{}` を使用する必要があるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。