Порядок приоритета между перегруженным оператором и функцией-членом одного и того же класса в c ++ - PullRequest
0 голосов
/ 10 января 2019

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

  1. '*' -> Матричное к матричному умножению
  2. '. *' -> Умножение элементов

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

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

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

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

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

1 Ответ

0 голосов
/ 10 января 2019

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

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

...