为什么在C++中重载运算符时不能更改运算符的优先顺序?例如,如果你有一个类,在乘法之前做加法是有意义的,那么如何使加法运算符具有比乘法运算符更高的优先级呢?
这与这个问题Operator overloading and precedence不同,因为我问的是为什么,以及如何绕过这个限制。
我倾向于避免编译器定制,只使用C++14标准。第三方库是可以的。
发布于 2017-03-07 15:49:02
传统的编译器设计首先解析语法,然后才能找出每个运算符的来源。
在C++出现之前很久,像YACC这样的编译器设计工具就已经存在了。因此,随着时间的推移,传统编译器遵循的一般原则是先解析源代码的语法,然后尝试找出如何处理每个运算符。因此,编译器首先看到的是语言的结构;而C++标准实际上是想让编写C++编译器成为可能,而不需要重新发明已经发明的每一个轮子。
https://stackoverflow.com/questions/42652462
复制相似问题