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

可不可以直接像普通函数那样定义?... 可不可以直接像普通函数那样定义? 展开
 我来答
hatianxiao
2017-01-25 · TA获得超过2047个赞
知道大有可为答主
回答量:2295
采纳率:77%
帮助的人:1275万
展开全部
我在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();

}
heptnaol
2017-01-25 · TA获得超过7263个赞
知道大有可为答主
回答量:7120
采纳率:78%
帮助的人:1817万
展开全部
可以重载普通函数,这个没问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式