c++ - 拥有一个包含很多(很多!) bool 字段的 C++ 类是否可以?

标签 c++ structure icc

我有一个 C++ 类,其中包含许多指示系统不同方面的 bool 字段。这个类是另一个被复制的类的一部分(很多!)。

我的问题:

  • 上课有很多 bool 值可以吗?还是我应该手动将其压缩成更大的数据类型?
  • 鉴于该类被大量复制,定义我自己的复制/移动构造函数有什么好处吗?
  • 或者我应该不理会它,让编译器对其进行优化吗?

最佳答案

首先,假设您的类不用于实例化大量对象,通常是可以的。在后一种情况下,使用整个 bool 来表示 bool 标志可能被证明太浪费了。但是您正在谈论代表“系统的不同方面”的标志,这听起来像是不会产生大量实例的东西。

其次,也许您应该考虑将这些字段转换为由枚举索引的 bool 数组。例如,而不是

bool has_printer;
bool needs_optimizations;

使用

enum {
  OPT_HAS_PRINTER,
  OPT_NEEDS_OPTIMIZATION,

  OPT_COUNT_
};

bool options[OPT_COUNT_];

这将使您的字段集合“运行时可迭代”,这可能会简化许多不关心每个字段的应用程序特定含义的处理代码(如复制代码、读写代码等) .

关于c++ - 拥有一个包含很多(很多!) bool 字段的 C++ 类是否可以?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26368274/

相关文章:

C++ 对临时 : is it legal? 进行非常量引用

c++ - 在 C 中嵌入 Ruby 并扩展

c - 从函数返回结构。 C

C++内存对齐问题

c++ - 没有合适的构造函数可以从 int 转换为 emp

c++ - 像 C++ 一样支持 NSArray(奇怪的代码示例)

c - 努力构建可移植代码以使用 C 在任何操作系统中生成文件

linux - 带英特尔 C 编译器 ICC 的 Eclipse

无法从c中的堆栈结构复制字符串

c++ - 预编译头文件中的错误 C2512?