C++中未初始化成员布尔变量的默认值是多少?

What is the default value of uninitialized member bool varaible in C++?

本文关键字:默认值 多少 变量 布尔 初始化 成员 C++      更新时间:2023-10-16

考虑:

#include <iostream>
using namespace std;
class Bool_tester {
private:
bool flag;
public:
bool get()
{
return flag;
}
};
int main()
{
// Create an instance of Bool_tester
Bool_tester test1;
// Call the get member function
cout << test1.get() << endl;
return 0 ;
}

它的输出是 204 和 true。布尔成员变量的默认值是否为真?

只有全局变量在未显式初始化时才获得默认值零。

对于局部变量,编译器不需要清理分配给它们的内存的内容。

如果给任何局部变量一个非零垃圾值,该值在布尔变量中计算为 true,这就是您的情况。未初始化的基元数据类型具有任何值,最好的做法是初始化局部变量。

我的编译器发出警告:

main.cpp:48:27: warning: 'test1' is used uninitialized in this function [-Wuninitialized]

因此,您看到的不是默认值,而是之前在内存中布尔值现在所在的地址的任何值。

对于非类类型,您可以使用零初始化来初始化您的值,这意味着对于布尔值,它被初始化为false

class Bool_tester {
bool flag{};
...
}