我正在处理如下所示的遗留代码:
class Foo {
public:
Foo();
private:
bool a1, a2, a3 /*, ...*/, a50;
};
Foo::Foo() {
a1 = a2 = a3 /* = ... */ = a50 = false;
}
这很乱。有没有办法将同一时间的所有私有(private)变量默认为与上述不同的单个值?我不想使用初始化列表,因为变量太多了。
我知道 bool
的默认构造函数赋值为 false - 这可以利用吗?
最佳答案
有很多可能的方法,但它们都非常相似。无论如何,您将使用不同的形式分配每个变量。
我认为最好的主要方法是在构造函数中逐行正确分配所有变量。可能它不是紧凑的,但它是最有意义的,你总是可以轻松地查看你的变量默认值:
Foo::Foo() {
a1 = false;
a2 = false;
/*...*/
a50 = false;
}
您描述的另一种方法是使用赋值运算符:
Foo::Foo() {
a1 = a2 = a3 /* = ... */ = a50 = false;
}
另一个允许在构造函数声明后立即初始化变量:
Foo::Foo() :
a1(false),
a2(false),
/*...*/
a50(true)
{ }
如果我忘记了任何方法,请将其写在评论中。
关于c++ - 在一行中初始化多个私有(private)变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32999233/