obj1 * = obj2 VS. obj1 = obj1 * obj2 в C ++ - PullRequest
       2

obj1 * = obj2 VS. obj1 = obj1 * obj2 в C ++

0 голосов
/ 08 сентября 2011

Предполагая, что я реализовал перегрузку операторов *=, = и *, что вы предпочтете использовать по сложности?Благодарю.

Ответы [ 4 ]

2 голосов
/ 08 сентября 2011

Учитывая, что я обычно применяю operator * в терминах operator *= и копию, нет никаких оснований предпочитать operator *.

Обычная реализация operator *+, -, / и т. Д.) Обычно должна выглядеть следующим образом:

T operator *(T const& left, T const& right) {
    T result = left;
    return result *= right;
}
1 голос
/ 08 сентября 2011

Оба использования НЕ сложны для простых операций, таких как указанная вами. Но для более длинных выражений * = может сделать вещи более читабельными.

0 голосов
/ 08 сентября 2011

= и * отдельные реализации более полезны.Это позволяет выражения типа * b * c * d.Однако учтите затраты на создание дополнительных копий, как отметил Бенджамин Линдли.

0 голосов
/ 08 сентября 2011

Если вы реализовали их нормально, тогда предпочтите *=.Другой способ потребует сделать копию, затем применить к ней *=, а затем присвоить обратно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...