C++中未初始化成员布尔变量的默认值是多少?
What is the default value of uninitialized member bool varaible in C++?
考虑:
#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{};
...
}
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 具有默认值的引用获取函数
- 当给定默认值时,为什么此模板参数推导失败
- 从具有默认值的部分指定模板类继承时发生SWIG错误,具有不带默认值的正向声明
- 格式化浮点值:返回默认值
- 如何将数组部分初始化为某个默认值?
- asn1c 不会从 asn.1 模块中提取八位字节字符串的默认值
- 创建一个包含 c++ 默认值的环境文件
- C++(和 ROS) - 包含与前向声明引用,设置默认值和类型定义
- Makefile g++ 使用命令行中的 -D 变量进行编译,默认值
- Switch 语句(字符串)一直选择默认值,除非其为零
- 如何使用默认值将枚举声明为 extern
- 如何在提升程序选项中设置矢量<矢量>的默认值<string>
- 如何使用默认值为构造函数中的枚举赋值?
- 变量始终在函数中重置为默认值
- C++中未初始化成员布尔变量的默认值是多少?
- char指针或char变量的默认值是多少
- c++ 中堆上数组的默认值是多少?
- std::atomic 的默认值是多少?
- C++函数,一个对象的默认值是多少