Возврат по ссылке и цепочке операторов

Зачем возвращаться по ссылке для цепочки операторов?

Я посмотрел так много ответов о SO, и основная фраза — «возврат по ссылке, чтобы разрешить цепочку операторов», но без объяснения причин я не понимаю, почему я не могу сделать это каким-либо другим способом.

Например, это, кажется, компилируется в моей системе и работает нормально, и цепочка работает:

TestClass operator+=(TestClass tc){
somePrivateValue += tc.somePrivateValue;
return *this;
}

Где я также могу сделать это:

TestClass& operator+=(TestClass& tc){
somePrivateValue += tc.somePrivateValue;
return *this;
}

Исключая тот факт, что второй пример не требует вызова конструктора копирования TestClass Каковы другие преимущества?

-1

Решение

и цепные работы

Нет, это не так.

TestClass a = some_value;
TestClass b = some_other_value;
(a += b) += b;

Теперь проверьте значение aОднако это сделано. Отражает ли это увеличение b дважды? Или только один раз?

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector