考虑以下代码示例:
class MyClass {
public:
MyClass( float f, char a );
private:
int b;
};
通过这样声明,整数b 的初始值是否由deafult设置为零?
如果可以,我可以更改b的值,如: (请记住,以下代码将被多次调用,并且每次为该过程的下一次迭代都需要分配给b的值)
int fg = int(ds/r);
int temp1;
if(b==0) {
temp1=0;
}
temp1=b;
b=fg;
答案 0 :(得分:3)
默认情况下,它未初始化。
在C ++ 11中,你可以写:
private:
int b = 0;
现在任何类的构造函数都会使用b
初始化0
的值,如果你没有明确说明的话
答案 1 :(得分:2)
通过这样声明,是否通过deafult将整数b的初始值设置为零?
这一切都取决于构造函数的实现。如果您没有对此采取任何措施,则b
的值未指定。
要确保将其设置为0
,您需要在构造函数实现中使用以下内容:
MyClass::MyClass( float f, char a ) : b() {}
请注意,在C ++ 11中,您可以在声明点初始化数据成员,因此您可以这样做:
class MyClass {
public:
MyClass( float f, char a );
private:
int b = 0; // or int b{0}, but not int b(0)
};
答案 2 :(得分:1)
变量b
没有初始化为0
(建议在成员初始化列表中初始化它)
MyClass( float f, char a ) : b(0) { }
答案 3 :(得分:0)
该变量未初始化,这意味着其值未定义(随机垃圾)。
您可以根据需要设置值。这没有问题(只要b已初始化)。