2014-11-13 4 views
0

Мой лектор C++ утверждает, что всякий раз, когда вам нужно реализовать оператор +(), вы должны также предоставить оператор + =()?оператор +() и оператор + =()

Я не мог понять эту логику, может ли кто-нибудь объяснить мне логику этого решения?

+0

Имеет смысл делать то и другое, если вы собираетесь сделать это, но для этого нет необходимости. – crashmstr

+0

Нет, ничто не заставляет вас делать это, потому что это логично. – clcto

+0

Претензия необоснованна: оператор Z + (X, Y) –

ответ

1

Ваш лектор ошибается.

То, что вы можете суммировать два объекта, образующих новый третий объект (что является бинарным +), необязательно означает, что ваши объекты должны быть модифицируемыми «на месте» (что и делает +=).

Другими словами, если и только если ваш класс поддерживает концепцию бытия изменяемую в месте, то это довольно хорошая практика программирования для обеспечения += всякий раз, когда вы предоставите как + и =. Но в любом случае здесь нет «необходимости».

Смежные вопросы