c++中同class的重载运算符和成员函数之间的优先顺序
Precedence order between overloaded operator and member function of the same class in c++
我正在使用 c++ 处理矩阵 class 以使矩阵运算与 MATLAB 非常相似。 MATLAB 中有两种类型的乘法。
- '*' -> 矩阵到矩阵乘法
- '.*' -> 元素乘法
为了在 C++ 中实现这些操作,我重载了“*”运算符来执行矩阵到矩阵的乘法,并提供了一个成员函数 mult() 来执行元素明智的操作。但是,我无法弄清楚两者之间的优先顺序是什么。例如,我有三个大小为 (2x3) 的对象 A、大小为 (2x3) 的对象 B 和大小为 (3x2) 的对象 C。可以通过以下两种主要方式进行操作
- A.mult(B)*C
- C*A.mult(B)
我正在从重载运算符和成员函数中抛出异常。但是,由于这个 class 将被不太了解异常处理的人使用,如果可能的话,我希望 mult() 的优先级高于 *。
如果我违反了任何堆栈溢出规则,请告诉我。我是新手,这是我的第一个问题。
提前致谢。
函数调用优先于乘法运算符,因为根据 C++ 标准,函数调用的优先级为 2,乘法的优先级为 5。
另请参阅:https://en.cppreference.com/w/cpp/language/operator_precedence
我正在使用 c++ 处理矩阵 class 以使矩阵运算与 MATLAB 非常相似。 MATLAB 中有两种类型的乘法。
- '*' -> 矩阵到矩阵乘法
- '.*' -> 元素乘法
为了在 C++ 中实现这些操作,我重载了“*”运算符来执行矩阵到矩阵的乘法,并提供了一个成员函数 mult() 来执行元素明智的操作。但是,我无法弄清楚两者之间的优先顺序是什么。例如,我有三个大小为 (2x3) 的对象 A、大小为 (2x3) 的对象 B 和大小为 (3x2) 的对象 C。可以通过以下两种主要方式进行操作
- A.mult(B)*C
- C*A.mult(B)
我正在从重载运算符和成员函数中抛出异常。但是,由于这个 class 将被不太了解异常处理的人使用,如果可能的话,我希望 mult() 的优先级高于 *。
如果我违反了任何堆栈溢出规则,请告诉我。我是新手,这是我的第一个问题。
提前致谢。
函数调用优先于乘法运算符,因为根据 C++ 标准,函数调用的优先级为 2,乘法的优先级为 5。
另请参阅:https://en.cppreference.com/w/cpp/language/operator_precedence