Зачем возвращаться по ссылке для цепочки операторов?Возврат по ссылке и цепочке операторов
Я смотрел так много ответов на SO, а фраза «возврат по ссылке, чтобы разрешить цепочку операторов», но без объяснения я не понимаю, почему я не могу сделать это по-другому.
Например, это, кажется, компилируется на моей системе и работает отлично, а сцепление работает:
TestClass operator+=(TestClass tc){
somePrivateValue += tc.somePrivateValue;
return *this;
}
Где я могу также сделать это:
TestClass& operator+=(TestClass& tc){
somePrivateValue += tc.somePrivateValue;
return *this;
}
Исключая тот факт, второй пример не требует, чтобы конструктор копирования вызывался для TestClass
, каковы другие преимущества?
Первый компилируется, но действительно ли он делает то, что вы хотите? – user2079303