【问题标题】:Default values for bit fields in c++11 [duplicate]c ++ 11中位字段的默认值[重复]
【发布时间】:2015-03-26 18:30:39
【问题描述】:

这行得通:

struct A {
  unsigned int x = 0;
};

这也有效:

struct A {
  unsigned int x : 1;
};

这两者可以结合吗?即同时初始化和指定大小?还是我需要显式地编写一个构造函数来做到这一点?

【问题讨论】:

  • 谢谢,TonyK。听起来 c++14 应该可以解决这个问题。

标签: c++11 bit-fields


【解决方案1】:

让我们快速看一下[class.mem]的语法:

成员声明符
声明符 virt-specifier-seqopt 纯说明符opt
声明符大括号或等于初始化器opt
标识符opt属性说明符序列opt常量表达式

位域是第三个选项,带有初始化器的成员是第二个。所以你不能两者兼得。

但是,您可以在构造函数初始化器列表中初始化命名位字段,就像任何其他非静态数据成员一样。 (但是你不能初始化 unnamed 位域,因为它们不是成员。)

【讨论】:

    猜你喜欢
    • 2014-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-04
    • 2021-06-27
    • 1970-01-01
    • 2021-03-01
    • 1970-01-01
    相关资源
    最近更新 更多