【发布时间】:2021-10-09 14:33:22
【问题描述】:
这个程序给变量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 ` int calc = m1 + m2;` 设置为未初始化的值。你想在设置 m1 和 m2 后设置 calc
-
int calc = m1 + m2;计算发生在trial在m1和m2有值之前构造时。请记住,c++ 将其作为 1 次分配执行。它不像电子表格,当值发生变化时会重新计算变量。 -
删除
int calc = m1 + m2;并在void getcalc(){中进行计算 为了更好的类设计,您可能希望删除void setdata(int a1, int a2) {并在您的试用类中添加一个构造函数来初始化m1和 @987654332 @关于建设。 -
如果你解释一下为什么你认为
calc里面不应该有垃圾,这个问题可能会更好?在什么时候给它分配一个非垃圾值?