Я знаю, что мы не можем вернуть локальную переменную по ссылке, так как она вышла бы из области видимости. Я немного смущен, когда дело доходит до возвращения пропущенных ссылок, хотя. Например, является ли приведенный ниже пример законным или это приведет к неопределенному поведению?
classobject &function(classobject &obj) {
return obj;
}
Это абсолютно нормально, и на самом деле это очень часто, как оператор, не являющийся членом<< и тому подобное, чтобы позволить вам связать оператора.
Главное, о чем нужно подумать, это время жизни объекта, и, как вы знаете, объект передается по ссылке, он должен пережить вызов функции. Это позволяет безопасно возвращать ту же ссылку.
Это законно и используется, например, cout<<
(хотя аргумент *this
вместо явного аргумента функции). Возвращает ссылку на cout
, позволяя cout<<"a"<<"b";
,