1.各自操作符有自己定义的参数类型,如::name类型,->member类型,++i左值类型,表达式类型等。类型是有要求的。
1.同优先级的操作符,具有相同结合性,不然会错误。
2.对于具有括号性质的操作符,括号有更高优先级(如(),[])。如arr[i + 1],虽然[]优先级大于+但还是先运算[]内表达式。
3.对于较高级的运算符,其参数遇到一个表达式(离该高优先级运算符较近的是一个高优先级操作符),这种情况基本不存在。这样的表达式基本是错误的,如i++++;报非左值错误。typeid ++i;报缺少()等,c++的操作符这种设计限制,导致了情况3的不存在。
4.对于较低级的运算符,其参数遇到一个表达式(离该低优先级运算符较近的是一个高优先级操作符),这种情况如delete new int; 那么先运算高优先级表达式,将返回值传入较低级操作符