bool“bar”默认为true,但它应该是false,它不能在构造函数中初始化。有没有办法将它初始化为false而不使其成为静态的?
foo.h中
class Foo{
public:
void Foo();
private:
bool bar;
}
foo.c的
Foo::Foo()
{
if(bar)
{
doSomethink();
}
}
发布于 2018-04-17 17:13:35
实际上,默认情况下它根本没有被初始化。看到的值仅仅是内存中用于分配的一些垃圾值。
如果你想设置一个默认值,你必须在构造函数中请求它:
class Foo{
public:
Foo() : bar() {} // default bool value == false
// OR to be clear:
Foo() : bar( false ) {}
void foo();
private:
bool bar;
}
C ++ 11:
class Foo{
public:
// The constructor will be generated automatically, except if you need to write it yourself.
void foo();
private:
bool bar = false; // Always false by default at construction, except if you change it manually in a constructor's initializer list.
}
发布于 2018-04-17 18:20:48
可以使用构造函数初始化列表。
https://stackoverflow.com/questions/-100008149
复制相似问题