我是C ++的新手,需要作业方面的帮助。
创建一个Num类,其对象包含一个双精度值。可以将此值输出到流出。为该类重新定义算术运算符“ +”和“-”,以便当一个操作数为int类型时,该对象仅涉及其值的整个部分。例如
Num x(5.5);
cout<<"x="<<x<<endl;// return 5.5
int a=2; double b=2.5;
cout<<"a+x="<<a+x<<endl;// return 7
cout<<"x+a="<<x+a<<endl;// return 7
cout<<"b+x="<<b+x<<endl;// return 8
cout<<"x+b="<<x+b<<endl;// return 8
那是我的代码:
class Num
{
double _num;
public: Num(double n) : _num(n) {};
double operator+(double b)
{
if ( (_num - (int)_num) == 0 || (b - (int)b) == 0) {
return (int)_num + (int)b;
} else {
return _num + b;
}
}
double operator-(double b)
{
if ( (_num - (int)_num) == 0 || (b - (int)b) == 0) {
return (int)_num - (int)b;
} else {
return _num - b;
}
}
};
int main()
{
Num x(5.5);
cout<<"x="<<x<<endl;// return 5.5
int a=2;
double b=2.5;
//cout<<"a+x="<<a+x<<endl;// return 7
cout<<"x+a="<<x+a<<endl;// return 7
cout<<"x+b="<<x+b<<endl;// return 8
cout<<"b+x="<<b+x<<endl;// return 8 // I am receiving the error here
// cout<<"a+b="<<a+b<<endl;// return 8
//cout<<"b+x="<<b+x<<endl;// return 8
//cout<<"x+b="<<x+b<<endl;// return 8
return 0;
}
我知道我要使用operator <<,但是我不知道如何正确预定义它。有人可以告诉我它的外观吗。谢谢!
答案 0 :(得分:6)
您需要在类外部定义一个运算符<<,该操作符将std :: ostream作为左侧参数,将您自己的Num类用作右侧。