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

时间:2019-01-10 14:31:43

标签: c++ matlab matrix overloading operator-precedence

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

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

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

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

我从重载的运算符和成员函数中抛出异常。但是,由于此类将由对异常处理了解不多的人使用,因此,我希望mult()的优先级比*更高(如果可能)。

让我知道我是否违反了堆栈溢出的任何规则。我是新手,这是我的第一个问题。

谢谢。

1 个答案:

答案 0 :(得分:3)

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

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