Порядок приоритета между перегруженным оператором и функцией-членом одного и того же класса в C++
Я работаю над классом матрицы в C++, чтобы сделать операции с матрицами очень похожими на MATLAB. В MATLAB доступно два типа умножений.
- '*' -> Матрица к матричному умножению
- '.*' -> Элемент умного умножения
Чтобы выполнить эти операции в C++, я перегрузил оператор '*', чтобы сделать Matrix для умножения матриц, и предоставил функцию-член mult() для выполнения поэлементных операций. Однако я не могу понять, каков порядок приоритетов между ними. Например, у меня есть три объекта A с размером (2x3), B с размером (2x3) и C с размером (3x2). Операции могут быть выполнены следующими двумя основными способами
- A.mult(В)* С
- С *A.mult(В)
Я выбрасываю исключения как из перегруженного оператора, так и из функций-членов. Однако, так как этот класс будет использоваться людьми, которые мало знают об обработке исключений, я хотел бы иметь приоритет mult(), чем *, если это возможно.
Дайте мне знать, если я нарушил какие-либо правила переполнения стека. Я новичок, и это мой первый вопрос.
Заранее спасибо.
1 ответ
Вызовы функций имеют приоритет над оператором умножения, поскольку вызовы функций имеют приоритет 2, а умножение имеет приоритет 5, согласно стандарту C++.
Смотрите также: https://en.cppreference.com/w/cpp/language/operator_precedence