如果 我不在构造函数中初始化他 直接拿来用
那么 他的默认值是true 还是 false ?
经过 测试 是true.
主要问下 是在不管什么编译环境下 默认都为true 还是说这个默认值是不确定的?
21 个解决方案
#1
不确定的,如果静态变量那默认就是false了
#2
不确定的。。最好在构造函数中或者使用之前初始化下。。
#3
要看它是放在哪个段里面的了,要是放在bss段肯定是false,要是在ss里面就是未定了
#4
不是静态变量呢
就是普通的一个类成员变量bool m_bValue;
也是不确定的么?
#5
不仅是指针变量在使用前要初始化,任何变量都应该在使用前初始化。
#6
现在我遇到一个问题 就是一个bool变量 作为开启某个功能的开关
但有另外一个操作 会经过这个类的构造函数 从而将这个bool重新赋值为开始初始化的值 这是我不想的
所以 就想不初始化bool
#7
不确定。
这涉及到系统内存分配的实现问题,一般从free到commit内存,系统默认值都是0。所以你测试看到的,都是0
所有变量,都需要初始化。不初始化,那值就是随机的。
因为一个类在创建出来的时候,系统只是把一段空闲的内存给它了,而没有对这段内存做初始化操作,这样你对应的变量是什么值,就依赖这块内存里原来的内容。
你做这样一个测试,有个类,有10个bool变量,都不初始化。
你用一个函数,把其中的5个修改一下值。用另一个函数打印值。
而后你new 这个类,修改,打印,delete这个类。而后循环做这个动作,看看默认值是不是变了。
这涉及到系统内存分配的实现问题,一般从free到commit内存,系统默认值都是0。所以你测试看到的,都是0
所有变量,都需要初始化。不初始化,那值就是随机的。
因为一个类在创建出来的时候,系统只是把一段空闲的内存给它了,而没有对这段内存做初始化操作,这样你对应的变量是什么值,就依赖这块内存里原来的内容。
你做这样一个测试,有个类,有10个bool变量,都不初始化。
你用一个函数,把其中的5个修改一下值。用另一个函数打印值。
而后你new 这个类,修改,打印,delete这个类。而后循环做这个动作,看看默认值是不是变了。
#8
不在构造函数中初始化没关系呀。。
只要在使用之前初始化就可以了。。
#9
#10
但程序一开始就要判断
if ( m_bValue )
{
....
}
这个判断是放在一个循环里的
这个时候还没有任何赋值!
我就直接拿来用了。。。
#11
bool m_bValue = true
那你就初始化一下呗!~~~
那你就初始化一下呗!~~~
#12
不要空耗精力讨论错误的代码为啥有时候运行起来还是正确的。
#13
变量不初始化这个问题一般出问题后最费时间找,找到后还会被气死,所以如楼上几位说的,任何变量都要初始化.
#14
+1
#15
如果你的对象是在栈上建立的,纯看运气。
全局变量应该是false。
全局变量应该是false。
#16
编程习惯:不适用未初始化的变量!
#17
不确定,如果是静态就是false,因为内存块会被置0
#18
c/c++ 里面,
声明变量都建议 强制初始化
#19
大多是程序逻辑问题
#20
详细、精确
#21
#1
不确定的,如果静态变量那默认就是false了
#2
不确定的。。最好在构造函数中或者使用之前初始化下。。
#3
要看它是放在哪个段里面的了,要是放在bss段肯定是false,要是在ss里面就是未定了
#4
不是静态变量呢
就是普通的一个类成员变量bool m_bValue;
也是不确定的么?
#5
不仅是指针变量在使用前要初始化,任何变量都应该在使用前初始化。
#6
现在我遇到一个问题 就是一个bool变量 作为开启某个功能的开关
但有另外一个操作 会经过这个类的构造函数 从而将这个bool重新赋值为开始初始化的值 这是我不想的
所以 就想不初始化bool
#7
不确定。
这涉及到系统内存分配的实现问题,一般从free到commit内存,系统默认值都是0。所以你测试看到的,都是0
所有变量,都需要初始化。不初始化,那值就是随机的。
因为一个类在创建出来的时候,系统只是把一段空闲的内存给它了,而没有对这段内存做初始化操作,这样你对应的变量是什么值,就依赖这块内存里原来的内容。
你做这样一个测试,有个类,有10个bool变量,都不初始化。
你用一个函数,把其中的5个修改一下值。用另一个函数打印值。
而后你new 这个类,修改,打印,delete这个类。而后循环做这个动作,看看默认值是不是变了。
这涉及到系统内存分配的实现问题,一般从free到commit内存,系统默认值都是0。所以你测试看到的,都是0
所有变量,都需要初始化。不初始化,那值就是随机的。
因为一个类在创建出来的时候,系统只是把一段空闲的内存给它了,而没有对这段内存做初始化操作,这样你对应的变量是什么值,就依赖这块内存里原来的内容。
你做这样一个测试,有个类,有10个bool变量,都不初始化。
你用一个函数,把其中的5个修改一下值。用另一个函数打印值。
而后你new 这个类,修改,打印,delete这个类。而后循环做这个动作,看看默认值是不是变了。
#8
不在构造函数中初始化没关系呀。。
只要在使用之前初始化就可以了。。
#9
#10
但程序一开始就要判断
if ( m_bValue )
{
....
}
这个判断是放在一个循环里的
这个时候还没有任何赋值!
我就直接拿来用了。。。
#11
bool m_bValue = true
那你就初始化一下呗!~~~
那你就初始化一下呗!~~~
#12
不要空耗精力讨论错误的代码为啥有时候运行起来还是正确的。
#13
变量不初始化这个问题一般出问题后最费时间找,找到后还会被气死,所以如楼上几位说的,任何变量都要初始化.
#14
+1
#15
如果你的对象是在栈上建立的,纯看运气。
全局变量应该是false。
全局变量应该是false。
#16
编程习惯:不适用未初始化的变量!
#17
不确定,如果是静态就是false,因为内存块会被置0
#18
c/c++ 里面,
声明变量都建议 强制初始化
#19
大多是程序逻辑问题
#20
详细、精确