我发现下面的URL表示
If an operator can be used as either a unary or a binary
operator (&, *, +, and -), you can overload each use separately.
我正在使用Linux中的g ++,我尝试了以下内容并且没有编译。
int operator+ (const int a,const int b){
std::cout << "MINE"<<std::endl;
return 0;
}
int main(){
char c='c';
std::cout << c+2 << std::endl;
}
错误说
error: ‘int operator+(int, int)’ must have an argument
of class or enumerated type
我愿意参与并观看整数推广规则。
我做错了什么或者网址只对MS有效或我误解了促销规则?
答案 0 :(得分:6)
错误消息间接告诉您需要知道的内容 - 不允许重载仅对内置类型起作用的运算符(二进制或一元)。
对于用户定义的类型T
,您可以单独重载二进制+(例如通过T operator+(T lhs, T rhs)
)和一元+(例如通过T operator+(T t)
)。您也可以定义operator+(T lhs, int rhs)
,但不能重载两个整数的加法。
答案 1 :(得分:1)
示例不正确,因为 n3337 13.5 / 6
运算符函数应该是非静态成员函数或者是非成员函数并且具有 至少一个参数,其类型是类,对类的引用,枚举或对引用的引用 枚举。