这很有效:
struct A {
unsigned int x = 0;
};
这也起作用:
struct A {
unsigned int x : 1;
};
有可能把两者结合起来吗?即,同时初始化和指定大小?或者我需要显式地编写一个构造函数来实现这一点吗?
让我们快速了解一下[class.mem]的语法:
成员声明符:
nbsp nbsp声明符virt说明符seqopt纯说明符opt
nbsp nbsp声明符大括号或相等的初始值设定项opt
nbsp nbsp标识符opt属性说明符seqopt:常量表达式
位字段是第三个选项,具有初始值设定项的成员是第二个选项。所以你不能两者兼得。
但是,可以初始化构造函数初始值设定项列表中的命名位字段,就像任何其他非静态数据成员一样。(但是不能初始化未命名的位字段,因为它们不是成员。)