为什么要将垃圾值分配给变量 'calc'?

Why it is assigning a garbage value to variable 'calc'?

这个程序给变量一个垃圾值calc

谁能帮帮我?这里有什么问题?

代码:

#include <iostream>
using namespace std;

class trial {
public:
    int m1;
    int m2;
    int calc = m1 + m2;
    void setdata(int a1, int a2) {
        m1 = a1;
        m2 = a2;
    }
    void getcalc(){
        cout << "Sum of m1 & m2 is " << calc << endl;
    }
};

int main() {
    trial t1;
    t1.setdata(3, 8);
    t1.getcalc();
    system("pause>0");
    return 0;
}

输出:

Sum of m1 & m2 is -1717986920

问题是你如何定义 calc

当一个对象trial被初始化时,m1+m2被分配给calc,但是m1m2本身并没有被初始化(它们包含'garbage').

setdata() 被调用时,两个用户提供的整数被分配给 m1m2,但是 calc 没有改变,因此 'garbage'在输出中。

您需要通过在 setdata() 中添加 calc = m1 + m2; 来更新 calc

你永远不会首先计算总和...

void setdata(int a1, int a2) {
        m1 = a1;
        m2 = a2;
        calc = m1 + m2;
    }

但总是初始化成员变量,你没有初始化 m1 和 m2,因此编译器分配的垃圾值。