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,运算符重载不能改变运算符操作的预算对象数目,

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