【发布时间】:2015-10-07 17:56:24
【问题描述】:
我正在处理如下所示的遗留代码:
class Foo {
public:
Foo();
private:
bool a1, a2, a3 /*, ...*/, a50;
};
Foo::Foo() {
a1 = a2 = a3 /* = ... */ = a50 = false;
}
这很混乱。有没有办法将同一时间的所有私有变量默认为与上述不同的单个值?我不想使用初始化列表,因为变量太多。
我知道bool 的默认构造函数赋值为 false - 这可以利用吗?
【问题讨论】:
-
只是一个想法,但不是有 50 个布尔值,为什么不
bool flags[50]{ false };? -
@NathanOliver 我很乐意这样做,但 PM 可能会争辩说这些变量会丢失一个有意义的标识符。
-
您可能想做
memset( this, 0, sizeof( Foo ) )....即使它可能在您的特定示例中有效,但不建议这样做:stackoverflow.com/questions/1975916/… -
确实,小心 memset!
-
@erip 我强烈主张使用布尔数组。还是变量名称与您的示例中的名称不同?
标签: c++ constructor default-constructor