2013-12-12 5 views
2

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

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

Ничего не вымирает. Ты отдаешь им то, что они тебе дали. Случается при предоставлении поддержки класса для вывода и ввода все время. – chris

ответ

6

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

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

0

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

+0

Оператор без члена <<() принимает объект потока по ссылке, как пример @ Veritas. – polkadotcadaver

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