为什么在C ++中重载运算符时不能更改运算符优先级?例如,如果你有一个类,在乘法之前进行加法是有意义的,你怎么能使加法运算符的优先级高于乘法运算符呢?
这与此问题不同Operator overloading and precedence 因为我问为什么,以及如何解决这个限制。
我宁愿避免编译器自定义,也只使用C ++ 14标准。第三方库是可以的。
答案 0 :(得分:3)
传统的编译器设计首先解析语法,然后确定每个运算符的来源。
像YACC这样的编译器设计工具早在C ++之前就存在了。因此,传统编译器随着时间的推移逐渐发展,首先是解析源代码语法的一般原则,然后试图弄清楚如何处理每个运算符。因此,编译器首先看到语言的结构,最重要的是;并且C ++标准实际上希望能够编写C ++编译器而不必重新发明已经发明的每个轮子。