C++只有结构体和类里才能重载运算符吗?

可不可以直接像普通函数那样定义?
2025-04-07 00:30:39
推荐回答(2个)
回答1:

我在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<MainWindow w;
w.show();

return a.exec();

}

回答2:

可以重载普通函数,这个没问题