运算符重载

举报
用户已注销 发表于 2021/11/19 04:42:51 2021/11/19
【摘要】 1,运算符的优先级 运算符的优先级,和数学中的运算优先级意思一样,比如乘法除法的优先级比加法减法的优先级高。   2,运算符的结合性 如果两个运算符的优先级一样,比如 加法和加法,或者,加法和减法,那么就需要根据结合性确定运算顺序。 比如加减法的优先级相同,具有左结合性,a+b-c就是先算a+b,a-b+c就是先算a...

1,运算符的优先级

运算符的优先级,和数学中的运算优先级意思一样,比如乘法除法的优先级比加法减法的优先级高。

 

2,运算符的结合性

如果两个运算符的优先级一样,比如 加法和加法,或者,加法和减法,那么就需要根据结合性确定运算顺序。

比如加减法的优先级相同,具有左结合性,a+b-c就是先算a+b,a-b+c就是先算a-b

因为C和C++的设计是,决定运算符的运算顺序,需要且只需要2个规则,一个是优先级,一个是结合性

所以优先级相同的运算符,要么全是左结合性,要么全是右结合性

实际上,C和C++中,优先级分为十几级,右结合性只有其中的三个等级,即三类运算符:单目运算符、三目运算符、赋值运算符

 

3,运算符函数

c++运行重载大部分运算符,但不允许创建新的运算符。

运算符重载的方法是在类中定义函数,函数名必须是operator加上操作符。

重载之后还是可以像普通函数一样调用,也可以简写,直接用操作符就行。

示例:


  
  1. #include<iostream>
  2. using namespace std;
  3. class A
  4. {
  5. public:
  6. int operator+(int b)
  7. {
  8. return a + b + 1;
  9. }
  10. A(int a)
  11. {
  12. this->a = a;
  13. }
  14. private:
  15. int a;
  16. };
  17. int main()
  18. {
  19. cout << A(2).operator+(3);
  20. cout << endl << A(4) + 5;
  21. return 0;
  22. }

输出结果:

6
10

 

4,运算符重载不能改变运算符的优先级和结合性,

因为运算符重载只能改变运算符的内部逻辑,而优先级和结合性都是运算符和运算符之间的逻辑。

 

5,运算符重载不能改变运算符操作的预算对象数目,

比如二元运算符重载之后还是二元运算符。

文章来源: blog.csdn.net,作者:csuzhucong,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/nameofcsdn/article/details/104603352

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。