运算符重载如何解决函数重载问题。我的意思是我不太明白如何使用已经重载了它的函数来重载操作符。
答案 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
,因为这些内置于编译器中。