我有一个我不了解方法float set(void)的练习,因此,首先将A :: v初始化为一个未知数(例如1234),但在A :: v = v + 1.0之后。
结果应为A :: v = 1234 + 1.0。
不是,而是A :: v = 1。
#include <iostream>
using namespace std;
class A {
public:
float v;
float set(void) {
A::v = v + 1.0;
return A::v;
}
};
int main() {
A a;
cout<<a.set()<<endl;
return 0;
}
您只是不初始化类内部的值。当您在堆栈上分配空间时,值是随机垃圾。
#include <iostream>
using namespace std;
class A {
public:
float v = 1234.0; //You must initialize it with 1234 if you want result 1235
float set(void) {
/*A::v*/ v = v + 1.0;
return A::v;
}
};
int main() {
A a; //Initializing space on stack, uninitialized values are always, 0x00, 0xcd or trash from other functions.
cout<<a.set()<<endl;
return 0;
}