c++ - 具有多个属性的预定义运算符
问题描述
我是 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<< 但我不明白如何正确预定义它。有人可以告诉我它应该是什么样子。谢谢!
解决方案
您需要在您的类之外定义一个 operator<<,它将 std::ostream 作为左侧参数,将您自己的 Num 类作为右侧参数。
推荐阅读
- python - 如何使用环境变量覆盖python配置
- java - Web 元素之间的等待时间 [Webdriverwait Selenium]
- html - 我必须设置打印布局。材料超出 A4 页
- javascript - 带 foreach 的循环插入
- kubernetes - 改变 Kubernetes 工作的形象
- amazon-s3 - 如何使用 Kafka connect s3 sink 连接器标记 S3 存储桶对象
- python - 如何选择一组行而不是单行?
- python - [错误 18] 是否有解决方法:使用 Popen 调用“pip”时跨设备链接无效?
- regex - 如何使一张纸上的列仅包含另一列中的值或所述值的组合?
- neo4j - 如何在可能不存在属性的关系列表上使用 REDUCE?