Объявление внутри класса или снаружи? - PullRequest
0 голосов
/ 17 июня 2020

Учитывая следующие функции:

1)

IntMatrix operator+(const IntMatrix &matrix, int scalar);

2)

IntMatrix operator+(int scalar, const IntMatrix &matrix);

, которые берут скаляр и добавляют его к каждому члену в матрице, Должен ли я объявить их вне класса (как показано выше) или внутри моего класса?

В коллаже они думали так, если нам нужно, чтобы он работал в обоих направлениях (симметричное поведение) мы это декларируем, а здесь немного сложновато ...

1 Ответ

2 голосов
/ 17 июня 2020

Функция 1 может быть записана внутри класса как функция-член, но функция 2 должна быть записана как функция, не являющаяся членом, поскольку левая сторона не IntMatrix.

Я бы Предлагаем написать operator+=, который принимает int в качестве функции-члена. Затем вы можете легко вызвать это из обоих operator+, которые вы можете записать как не-члены.

Итак, ваш operator+ (как не-члены) будет выглядеть так:

IntMatrix operator+(IntMatrix matrix, int scalar) {
  return matrix += scalar;
}

IntMatrix operator+(int scalar, IntMatrix matrix) {
  return matrix += scalar;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...