【发布时间】:2019-02-21 21:47:39
【问题描述】:
我想通过重载 + 运算符来添加 2 个对象,但我的编译器说没有匹配的函数可以调用 point::point(int, int)。有人可以帮我处理这段代码并解释错误吗?谢谢你
#include <iostream>
using namespace std;
class point{
int x,y;
public:
point operator+ (point & first, point & second)
{
return point (first.x + second.x,first.y + second.y);
}
};
int main()
{
point lf (1,3)
point ls (4,5)
point el = lf + ls;
return 0;
}
【问题讨论】:
-
作为一个成员函数,它只需要一个参数。
-
提示:作为非成员函数,它将支持第一个参数,该参数不直接为
point,但提供到point的隐式转换。这对于成员函数是不可能的。因此,定义中缀+的首选方法是作为非成员函数。要做到这一点,只需在您已有的定义前面添加friend。 -
如果你已经声明了operator+,它需要在类定义之外
-
可以在What are the basic rules and idioms for operator overloading?找到关于这个和其他类似主题的许多智慧
-
参数是引用是可以的,但是它们应该是对
const point的引用,以支持右值表达式和const point实际参数。
标签: c++ sum int operator-overloading operator-keyword