我有一个 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/