这有效:
struct A {
unsigned int x = 0;
};
这也有效:
struct A {
unsigned int x : 1;
};
有可能将两者结合起来吗?即,同时初始化和指定大小?或者我是否需要显式编写构造函数来执行此操作?
答案 0 :(得分:0)
让我们快速浏览一下[class.mem]的语法:
构件声明符:
declarator virt-specifier-seq opt pure-specifier opt
declarator brace-or-equal-initializer opt
标识符 opt attribute-specifier-seq opt : constant-expression
位字段是第三个选项,具有初始化程序的成员是第二个选项。所以你不能兼得。
但是,可以初始化构造函数初始化列表中的命名位字段,就像任何其他非静态数据成员一样。 (但是你不能初始化未命名的位字段,因为它们不是成员。)