我工作的遗留代码如下所示:在一行中初始化许多私有变量
class Foo {
public:
Foo();
private:
bool a1, a2, a3 /*, ...*/, a50;
};
Foo::Foo() {
a1 = a2 = a3 /* = ... */ = a50 = false;
}
这是凌乱。有没有办法将同一时间的所有私有变量默认为与上述不同的单个值?我不想使用初始化列表,因为有太多变量。
我知道bool
的默认构造函数赋值为false - 这可以利用吗?
只是一个想法,而不必50级的bool为什么不'布尔标志[50] {FALSE}但是,'? – NathanOliver
@NathanOliver我很乐意这样做,但是PM可能会争辩说,这些变量会失去一个有意义的标识符。 – erip
你可能想要做'memset(this,0,sizeof(Foo))'....即使它可能在你的具体示例中工作,那也不建议:http://stackoverflow.com/questions/1975916/should -c-programmer-avoid-memset – jpo38