在 类 和构造函数 [OOP] 中从用户获取整数输入时无法正确使用运算符
Can't use operators properly when taking integer inputs from user in classes and constructors [OOP]
我正在尝试对相同的 2 个整数变量进行多次计算并分别显示它们的结果。
如果我已经为变量设置了值,它就可以正常工作。
但是,如果我尝试从用户那里获取输入,那么它会在输出中给我随机数。
这是我的代码,我在其中尝试从用户那里获取 input/values。
#include<iostream>
using namespace std;
class calculation
{
public:
calculation()
{
int num1 = 0;
int num2 = 0;
cout << "Write your numbers" << endl;
cin >> num1>>num2;
}
int sum()
{
return num1+num2;
}
int sub()
{
return num1-num2;
}
int mul()
{
return num1*num2;
}
int div()
{
return num1/num2;
}
int mod()
{
return num1%num2;
}
void displayMessage()
{
cout<<sum()<<endl<<sub()<<endl<<mul()<<endl<<div()<<endl<<mod();
}
private:
int num1,num2;
};
int main()
{
calculation obj;
obj.displayMessage();
system("Pause");
return 0;
}
输出不正确,它只是给我随机数。
但是,如果我使用以下代码使用预设值进行操作:
#include<iostream>
using namespace std;
class calculation
{
public:
calculation()
{
num1=10;
num2=5;
}
int sum()
{
return num1+num2;
}
int sub()
{
return num1-num2;
}
int mul()
{
return num1*num2;
}
int div()
{
return num1/num2;
}
int mod()
{
return num1%num2;
}
void displayMessage()
{
cout<<sum()<<endl<<sub()<<endl<<mul()<<endl<<div()<<endl<<mod();
}
private:
int num1,num2;
};
int main()
{
calculation obj;
obj.displayMessage();
return 0;
}
然后它给出正确的输出。
#include<iostream>
using namespace std;
class calculation
{
public:
calculation()
{
num1 = 0;
num2 = 0;
cout << "Write your numbers" << endl;
cin >> num1>>num2;
}
int sum()
{
return num1+num2;
}
int sub()
{
return num1-num2;
}
int mul()
{
return num1*num2;
}
int div()
{
return num1/num2;
}
int mod()
{
return num1%num2;
}
void displayMessage()
{
cout<<sum()<<endl<<sub()<<endl<<mul()<<endl<<div()<<endl<<mod();
}
private:
int num1,num2;
};
int main()
{
calculation obj;
obj.displayMessage();
system("Pause");
return 0;
}
您正在构造函数中重新声明局部作用域。删除 int num1 和 int num2 到 num1 = 0; num2 = 0;
还可以考虑将构造函数之外的用户输入移动到主构造函数,并有一个接受 2 个整数的构造函数。
calculation(int num1, int num2)
{
this->num1 = num1;
this->num2 = num2;
}
在你的构造函数中:
calculation()
{
int num1 = 0;
int num2 = 0;
cout << "Write your numbers" << endl;
cin >> num1>>num2;
}
您已经创建了两个 局部变量 名称 num1
和 num2
。它们与你的成员变量同名,但又不相同。它们是新变量。
您将值读入这些变量,然后在构造函数退出时立即销毁它们。
此更改将使用成员变量,而不是创建新变量。
calculation()
{
num1 = 0;
num2 = 0;
cout << "Write your numbers" << endl;
cin >> num1 >> num2;
}
您也可以选择使用 this->
来明确表示您打算更改 成员变量.
calculation()
{
this->num1 = 0;
this->num2 = 0;
cout << "Write your numbers" << endl;
cin >> this->num1 >> this->num2;
}
我正在尝试对相同的 2 个整数变量进行多次计算并分别显示它们的结果。 如果我已经为变量设置了值,它就可以正常工作。 但是,如果我尝试从用户那里获取输入,那么它会在输出中给我随机数。 这是我的代码,我在其中尝试从用户那里获取 input/values。
#include<iostream>
using namespace std;
class calculation
{
public:
calculation()
{
int num1 = 0;
int num2 = 0;
cout << "Write your numbers" << endl;
cin >> num1>>num2;
}
int sum()
{
return num1+num2;
}
int sub()
{
return num1-num2;
}
int mul()
{
return num1*num2;
}
int div()
{
return num1/num2;
}
int mod()
{
return num1%num2;
}
void displayMessage()
{
cout<<sum()<<endl<<sub()<<endl<<mul()<<endl<<div()<<endl<<mod();
}
private:
int num1,num2;
};
int main()
{
calculation obj;
obj.displayMessage();
system("Pause");
return 0;
}
输出不正确,它只是给我随机数。
但是,如果我使用以下代码使用预设值进行操作:
#include<iostream>
using namespace std;
class calculation
{
public:
calculation()
{
num1=10;
num2=5;
}
int sum()
{
return num1+num2;
}
int sub()
{
return num1-num2;
}
int mul()
{
return num1*num2;
}
int div()
{
return num1/num2;
}
int mod()
{
return num1%num2;
}
void displayMessage()
{
cout<<sum()<<endl<<sub()<<endl<<mul()<<endl<<div()<<endl<<mod();
}
private:
int num1,num2;
};
int main()
{
calculation obj;
obj.displayMessage();
return 0;
}
然后它给出正确的输出。
#include<iostream>
using namespace std;
class calculation
{
public:
calculation()
{
num1 = 0;
num2 = 0;
cout << "Write your numbers" << endl;
cin >> num1>>num2;
}
int sum()
{
return num1+num2;
}
int sub()
{
return num1-num2;
}
int mul()
{
return num1*num2;
}
int div()
{
return num1/num2;
}
int mod()
{
return num1%num2;
}
void displayMessage()
{
cout<<sum()<<endl<<sub()<<endl<<mul()<<endl<<div()<<endl<<mod();
}
private:
int num1,num2;
};
int main()
{
calculation obj;
obj.displayMessage();
system("Pause");
return 0;
}
您正在构造函数中重新声明局部作用域。删除 int num1 和 int num2 到 num1 = 0; num2 = 0;
还可以考虑将构造函数之外的用户输入移动到主构造函数,并有一个接受 2 个整数的构造函数。
calculation(int num1, int num2)
{
this->num1 = num1;
this->num2 = num2;
}
在你的构造函数中:
calculation()
{
int num1 = 0;
int num2 = 0;
cout << "Write your numbers" << endl;
cin >> num1>>num2;
}
您已经创建了两个 局部变量 名称 num1
和 num2
。它们与你的成员变量同名,但又不相同。它们是新变量。
您将值读入这些变量,然后在构造函数退出时立即销毁它们。
此更改将使用成员变量,而不是创建新变量。
calculation()
{
num1 = 0;
num2 = 0;
cout << "Write your numbers" << endl;
cin >> num1 >> num2;
}
您也可以选择使用 this->
来明确表示您打算更改 成员变量.
calculation()
{
this->num1 = 0;
this->num2 = 0;
cout << "Write your numbers" << endl;
cin >> this->num1 >> this->num2;
}