c++中同class的重载运算符和成员函数之间的优先顺序

Precedence order between overloaded operator and member function of the same class in c++

我正在使用 c++ 处理矩阵 class 以使矩阵运算与 MATLAB 非常相似。 MATLAB 中有两种类型的乘法。

  1. '*' -> 矩阵到矩阵乘法
  2. '.*' -> 元素乘法

为了在 C++ 中实现这些操作,我重载了“*”运算符来执行矩阵到矩阵的乘法,并提供了一个成员函数 mult() 来执行元素明智的操作。但是,我无法弄清楚两者之间的优先顺序是什么。例如,我有三个大小为 (2x3) 的对象 A、大小为 (2x3) 的对象 B 和大小为 (3x2) 的对象 C。可以通过以下两种主要方式进行操作

  1. A.mult(B)*C
  2. C*A.mult(B)

我正在从重载运算符和成员函数中抛出异常。但是,由于这个 class 将被不太了解异常处理的人使用,如果可能的话,我希望 mult() 的优先级高于 *。

如果我违反了任何堆栈溢出规则,请告诉我。我是新手,这是我的第一个问题。

提前致谢。

函数调用优先于乘法运算符,因为根据 C++ 标准,函数调用的优先级为 2,乘法的优先级为 5。

另请参阅:https://en.cppreference.com/w/cpp/language/operator_precedence