C++ コードを読んでいるときに、クラス内の次の小さな行を見て混乱しました。
bool x:1;
デバッグ ビルドでは、「x」が「false」として初期化されていることに気付きましたが、それに関するドキュメントは見つかりません。この構文が何をするのか誰か教えてもらえますか?
それはビットフィールドです。C++ の教科書でビット フィールドを読んでください。
への初期化false
は、宣言とは無関係です。コードによって保証されるかどうかは、コードによって異なります (指定されていません)。
C++ 標準では、サイズ 1 の整数ビットフィールドと列挙型ビットフィールドに対してある程度の余裕がコンパイラに与えられます。1
このようなフィールドに値を格納すると、 value を取得できます-1
。幸いなことに、これはサイズ 1 のフィールドにのみ適用され、タイプ のフィールドには適用されませんbool
。