c++ - 如何重载对象 = 常量 int + 对象
问题描述
#include<iostream>
using namespace std;
class mango
{
public:
int qnt;
mango(int x = 0)
{
qnt = x;
}
mango operator+(const int a)
{
mango temp;
temp.qnt = a + this->qnt;
return temp;
}
};
int main()
{
mango obj(5);
obj = obj + 5;
cout<<obj.qnt<<endl; // shows 10;
return 0;
}
现在我要重载object = constant_int + object,也就是
obj = 5 + obj;
我想在左侧保持常量整数并将总和存储在对象中。怎么做?
解决方案
很简单,定义类外的重载
class mango
{
...
};
mango operator+(const int a, const mango& b)
{
...
}
事实上,通常认为所有对称和反对称运算符都应该在类外定义。所以你的 mango + int 也应该被移出课堂。
mango operator+(const mango& a, const int b)
{
...
}
推荐阅读
- r - 获取 R 中新数据点的拟合值
- python - Python-在图像保存/覆盖时同时保留地理编码和方向
- jquery - datePicker Symfony 4 的格式问题
- linux - 当 PC 处于睡眠模式时,如何保持 C++ 代码运行?
- spring - Rest Api 应用程序无法连接到同一个 Kubernetes pod 中的 postgres db
- yii2 - ActiveQuery::andFilterWhere() 中的 Yii2 DB 表达式
- llvm - 是否有任何 api 可以使用 llvm 转换传递来初始化我的自定义类对象?如果没有,实现这一目标的最佳策略是什么?
- charts - 如何在 balkangraph orgchart 中“修复缩放功能”错误?
- xcode11 - Xcode 11 beta 7 (11M392r) 与 Catalina beta 7 (19A546d) 不兼容?
- wordpress - Wordpress 在 google 中列出 estranger 结果