运算符重载
【摘要】
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加上操作符。
重载之后还是可以像普通函数一样调用,也可以简写,直接用操作符就行。
示例:
-
#include<iostream>
-
using namespace std;
-
-
class A
-
{
-
public:
-
int operator+(int b)
-
{
-
return a + b + 1;
-
}
-
A(int a)
-
{
-
this->a = a;
-
}
-
private:
-
int a;
-
};
-
-
int main()
-
{
-
cout << A(2).operator+(3);
-
cout << endl << A(4) + 5;
-
return 0;
-
}
输出结果:
6
10
4,运算符重载不能改变运算符的优先级和结合性,
因为运算符重载只能改变运算符的内部逻辑,而优先级和结合性都是运算符和运算符之间的逻辑。
5,运算符重载不能改变运算符操作的预算对象数目,
比如二元运算符重载之后还是二元运算符。
文章来源: blog.csdn.net,作者:csuzhucong,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/nameofcsdn/article/details/104603352
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)