C++ 运算符-重载(相同的参数,不同的返回类型)
如何重载接受相同数量参数但返回类型不同的减号运算符 模板类:C++ 运算符-重载(相同的参数,不同的返回类型),c++,overloading,operator-keyword,C++,Overloading,Operator Keyword,如何重载接受相同数量参数但返回类型不同的减号运算符 模板类: 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.h:25: error: new dec
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.h:25: error: new declaration ‘double operator-(Minus&, Minus&)’
Minus.h:24: error: ambiguates old declaration ‘Minus operator-(Minus&, Minus&)’
不能,重载解析仅根据函数参数的类型选择重载。不,不能。仅当参数列表不同时才能执行重载。例如:
int myFun(int);
double myFun(int);
现在您正在呼叫
myFun(10)
。编译器无法确定调用哪个版本。运算符重载只是函数/方法重载的扩展。对于函数重载,函数的签名应该不同。正如你在文章中所报道的,这两个函数的签名是相同的
请注意,函数/方法签名不包括返回类型
有关此主题的更多信息,请阅读此处:您不能仅在返回类型上重载函数代码>。你期望什么
p-x代码>返回?您不需要将结果分配给任何东西,只需编写p-x代码>。注意:您应该使用此类运算符返回常量或对常量的引用。否则,您将能够编写愚蠢的语句,例如(a-b)=c代码>@JBL不,你搞错了。@LuchianGrigore哦?我想是的,这会使条件语句中的输入错误(即缺少一个=)与编译时错误突出。。。
int myFun(int);
double myFun(int);