如何重载减号运算符,接受相同数量的参数,但具有不同的返回类型?
模板类:
template <typename T>
T minus (T x, T y) {
return (x - y);
}
template <typename T>
double absMinus (T x, T y) {
double sd = abs(x - y);
return sd;
}
运算符重载类:
Minus operator-(Minus &p, Minus &q) {
return (p.something - q.something);
}
double operator-(Minus &p, Minus &q) {
return (p.something() - q.something());
}
当我尝试编译时,它给了我以下错误:
Minus.h:25: error: new declaration ‘double operator-(Minus&, Minus&)’
Minus.h:24: error: ambiguates old declaration ‘Minus operator-(Minus&, Minus&)’
答案 0 :(得分:2)
int myFun(int);
double myFun(int);
现在您正在呼叫myFun(10)
。编译器无法确定要调用的版本。
答案 1 :(得分:0)
你不能,重载决策只根据函数参数的类型选择一个重载。
答案 2 :(得分:0)
运算符重载只是函数/方法重载的扩展。对于函数重载,函数的签名应该不同。正如您在帖子中所报道的那样,这两个函数的签名是相同的。
请注意,函数/方法签名不包括返回类型。
有关此主题的更多信息,请参阅此处:Java - why no return type based method overloading?