c++11中位字段的默认值



这很有效:

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常量表达式

位字段是第三个选项,具有初始值设定项的成员是第二个选项。所以你不能两者兼得。

但是,可以初始化构造函数初始值设定项列表中的命名位字段,就像任何其他非静态数据成员一样。(但是不能初始化未命名的位字段,因为它们不是成员。)

最新更新