我对运算符重载非常熟悉,但是我想知道我们如何实现这样的东西:
myClass myclassobj;
int x;
x = 5;
x = x + myclassobj
没有办法为int类重载+运算符,所以应该从myClass做一些事情,但是我们怎么做呢?我可能使用了错误的关键字,但搜索SO并没有导致出现问题。抱歉,如果我做错了,这是我在这里的第一篇文章。
编辑 - 我的类是一个自定义矢量类,所以简单地将它转换为给定的类型是行不通的。
答案 0 :(得分:4)
使用签名int operator+(int, myClass)
定义重载运算符。
答案 1 :(得分:1)
你是对的。
没有办法为int类重载+运算符,所以 应该从myClass
完成一些事情
你的问题:
但我们怎么做?
我的回答:
您应该使用用户定义的类型转换。它可能适用于转换运算符。
#include <iostream>
class myClass
{
int i;
public:
myClass(int i=0) : i(i) { }
operator int(){ // A conversion from myClass to int may solve your problem.
return i;
}
};
int main()
{
myClass myclassobj(99);
int x=7;
x = 5;
x = x + myclassobj;
std::cout<<x<<std::endl;
return 0;
}
Brian也给出了一个很好的答案,但只有当重载的运算符不需要第二个参数的受保护或私有成员或者重载的运算符被声明为myClass的朋友时,它才有效。