C++中的运算符优先级重载

パスカ*_*スカル 5 c++ class operator-overloading c++14

为什么在 C++ 中重载运算符时不能更改运算符优先级?例如,如果你有一个类,在乘法之前做加法是有意义的,你怎么能让加法运算符比乘法运算符具有更高的优先级?

这与这个问题运算符重载和优先级不同 因为我在问为什么以及如何解决此限制。

我宁愿避免编译器定制,而只使用 C++14 标准。第三方库没问题。

Sam*_*hik 5

传统的编译器设计首先解析语法,然后再找出每个运算符的来源。

像YACC这样的编译器设计工具早在 C++ 之前就已经存在了。因此,传统编译器随着时间的推移而发展,遵循首先解析源代码语法的一般原则,然后尝试弄清楚如何处理每个运算符。因此,编译器首先会看到语言的结构;C++ 标准实际上希望能够编写一个 C++ 编译器,而无需重新发明已经发明的每一个轮子。