首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么默认情况下C++bool var是真的?

为什么默认情况下C++bool var是真的?
EN

Stack Overflow用户
提问于 2018-04-17 09:09:33
回答 2查看 0关注 0票数 0

bool“bar”默认为true,但它应该是false,它不能在构造函数中初始化。有没有办法将它初始化为false而不使其成为静态的?

foo.h中

代码语言:javascript
复制
class Foo{
 public:
     void Foo();
private:
     bool bar;
}

foo.c的

代码语言:javascript
复制
Foo::Foo()
{  
   if(bar)
   {
     doSomethink();
   }
}
EN

回答 2

Stack Overflow用户

发布于 2018-04-17 17:13:35

实际上,默认情况下它根本没有被初始化。看到的值仅仅是内存中用于分配的一些垃圾值。

如果你想设置一个默认值,你必须在构造函数中请求它:

代码语言:javascript
复制
class Foo{
 public:
     Foo() : bar() {} // default bool value == false 
     // OR to be clear:
     Foo() : bar( false ) {} 

     void foo();
private:
     bool bar;
}

C ++ 11:

代码语言:javascript
复制
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.
}
票数 0
EN

Stack Overflow用户

发布于 2018-04-17 18:20:48

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100008149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档