我未初始化的变量的值

问题描述 投票:0回答:1

我有一个我不了解方法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;
}
c++
1个回答
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;
}
© www.soinside.com 2019 - 2024. All rights reserved.