如何将操作符重载工作与函数重载相关联

时间:2013-10-22 00:46:28

标签: operator-overloading

运算符重载如何解决函数重载问题。我的意思是我不太明白如何使用已经重载了它的函数来重载操作符。

1 个答案:

答案 0 :(得分:0)

Operator只是一个给中缀函数(在它们的参数之间写的)的一个时髦的名字。因此,1 + 2只是+(1, 2)Overloading意味着你定义了几个函数(或运算符,它们是相同的东西),如下所示:

int square(int x);
double square(double x);

int operator + (int x, int y);
double operator + (double x, double y); // *

当这些在其他地方被调用时,C ++不仅可以通过名称来确定调用哪个,还可以通过实际参数的类型来调用。因此,当您编写square(5)时,第一个被调用,而当您编写square(5.0)时,第二个被调用。请注意,在更复杂的情况下,重载决策(确定要调用的函数)是much more tricky

可能你的意思是这种情况,当你的操作符不是作为一个函数而重载时,而是作为一个方法(即它的第一个参数是使用thiscall传递的),并且你想要重载它上面的二元运算符第二个论点。 Here's how it's done.

(*)实际上,您无法为operator +int声明double,因为这些内置于编译器中。