Порядок приоритета между перегруженным оператором и функцией-членом одного и того же класса в C++

Я работаю над классом матрицы в C++, чтобы сделать операции с матрицами очень похожими на MATLAB. В MATLAB доступно два типа умножений.

  1. '*' -> Матрица к матричному умножению
  2. '.*' -> Элемент умного умножения

Чтобы выполнить эти операции в C++, я перегрузил оператор '*', чтобы сделать Matrix для умножения матриц, и предоставил функцию-член mult() для выполнения поэлементных операций. Однако я не могу понять, каков порядок приоритетов между ними. Например, у меня есть три объекта A с размером (2x3), B с размером (2x3) и C с размером (3x2). Операции могут быть выполнены следующими двумя основными способами

  1. A.mult(В)* С
  2. С *A.mult(В)

Я выбрасываю исключения как из перегруженного оператора, так и из функций-членов. Однако, так как этот класс будет использоваться людьми, которые мало знают об обработке исключений, я хотел бы иметь приоритет mult(), чем *, если это возможно.

Дайте мне знать, если я нарушил какие-либо правила переполнения стека. Я новичок, и это мой первый вопрос.

Заранее спасибо.

1 ответ

Решение

Вызовы функций имеют приоритет над оператором умножения, поскольку вызовы функций имеют приоритет 2, а умножение имеет приоритет 5, согласно стандарту C++.

Смотрите также: https://en.cppreference.com/w/cpp/language/operator_precedence

Другие вопросы по тегам