【发布时间】:2017-07-27 21:46:04
【问题描述】:
为什么在 C++ 中重载运算符时不能更改运算符优先级?例如,如果您有一个类在乘法之前进行加法是有意义的,那么您如何使加法运算符的优先级高于乘法运算符?
这与这个问题不同Operator overloading and precedence 因为我在问为什么,以及如何解决这个限制。
我宁愿避免编译器定制,只使用 C++14 标准。第三方库没问题。
【问题讨论】:
-
“为什么在 C++ 中重载运算符时不能更改运算符优先级?” 标准是这样说的。 “如何解决这个限制”你不能。
-
我怀疑是否有可行的解决方法。
-
多半是因为传统的编译器设计先解析语法和代码的句法。只有在它被解析之后,C++ 编译器才会尝试找出每个运算符的来源、内置或重载。到那时,马已经离开了谷仓。
-
使用常规成员函数来强制执行订单。
-
但是标准为什么要这样规定呢?
标签: c++ class operator-overloading c++14