Вернуть переданную ссылку на объект

Я знаю, что мы не можем вернуть локальную переменную по ссылке, так как она выйдет за рамки. Я немного смущен, когда дело доходит до возврата переданных ссылок. Например, является ли приведенный ниже пример законным или приведет к неопределенному поведению?

classobject &function(classobject &obj) {
 return obj;
}

person Veritas    schedule 12.12.2013    source источник
comment
Ничего не вымирает. Вы возвращаете им то, что они дали вам. Происходит при постоянной поддержке класса для вывода и ввода.   -  person chris    schedule 13.12.2013


Ответы (2)


Это абсолютно нормально, и на самом деле очень часто операторы, не являющиеся членами, ‹‹ и тому подобное реализуются, чтобы вы могли связать оператор в цепочку.

Главное, о чем следует подумать, это время жизни объекта, а поскольку вы знаете, что объект передается по ссылке, он должен пережить вызов функции. Это позволяет безопасно возвращать ту же ссылку.

person Community    schedule 12.12.2013

Это допустимо и используется, например, cout<< (хотя аргумент *this вместо явного аргумента функции). Он возвращает ссылку на cout, позволяя cout<<"a"<<"b";.

person Ragnar    schedule 12.12.2013
comment
Оператор, не являющийся членом,‹‹() берет объект потока по ссылке, как в примере @Veritas. - person ; 13.12.2013