2个回答
展开全部
我在Qt中测试了一下,结论是需要符合函数匹配机制,要求运算符重载函数的参数必须有一个是class类型或枚举类型。换句话说你不要指望替换系统的默认库的行为啦,即2个int型相加的行为不是你能改变的。只有将一方设计成类类型或者枚举类型,枚举类型我没有测试了,应该是可以的,毕竟不是内置类型了。
class A{
public:
A();
int q;
};
A::A(){
q=5;
}
int operator +(int a,A b){
return a+b.q+2;
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
A mm;
cout<<5+mm<<endl;
MainWindow w;
w.show();
return a.exec();
}
class A{
public:
A();
int q;
};
A::A(){
q=5;
}
int operator +(int a,A b){
return a+b.q+2;
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
A mm;
cout<<5+mm<<endl;
MainWindow w;
w.show();
return a.exec();
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询