c++中,对运算符+进行重载,然后有两个类对象a,b。请问在进行a+b时候,它是怎么判断a和b对应

c++中,对运算符+进行重载,然后有两个类对象a,b。请问在进行a+b时候,它是怎么判断a和b对应于函数operator+的参数???... c++中,对运算符+进行重载,然后有两个类对象a,b。请问在进行a+b时候,它是怎么判断a和b对应于函数operator+的参数??? 展开
 我来答
zjfaok
推荐于2016-02-10 · TA获得超过6807个赞
知道大有可为答主
回答量:4146
采纳率:62%
帮助的人:1630万
展开全部

假设 a 的类型为 A,b 的类型为 B

  • 编译器首先通过 name lookup 找到所有在作用域内的 operator+ 函数,再加上假设内置运算符也是函数而生成的函数签名,构成 overload set

  • 然后,编译器执行 overload resolution,在 overload set 中找到最适合第一个实参类型为 A 第二个实参类型为 B 的函数(best viable function)

  • 找到最适合的函数之后还没完,编译器还要进行 access check,检查函数是否能够被调用


name lookup 和 overload resolution 都需要几万字才能讲完,而且还是充满专业说法,改写成不那么专业而易于理解的语言恐怕还要花更多功夫……
小志8554
2015-05-29 · TA获得超过1058个赞
知道小有建树答主
回答量:1198
采纳率:25%
帮助的人:314万
展开全部
a+b,就是a.operator+(b)
这样就可以理解了吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
手机用户52804
2015-05-29
知道答主
回答量:4
采纳率:0%
帮助的人:4890
展开全部
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式