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,运算符重载不能改变运算符操作的预算对象数目,
比如二元运算符重载之后还是二元运算符。