




Пожалуйста, поясните, что вы имеете в виду.
Предполагая, что вы собираетесь это сделать:
int * p = NULL;
{
int y = 22;
p = &y;
}
*p = 77; // BOOM!
Тогда нет, абсолютно нет, объем не может быть расширен за счет ссылки.
Вы можете посмотреть на умные указатели, например. из буст-библиотек: щелчок
НЕ безопасно расширять область применения посредством ссылки. Объекты в C++ не подсчитываются, когда obj1 выходит за пределы области видимости, он будет удален, ссылка на результат badIdea () только вызовет у вас проблемы.
Речь шла о C++ и привязке ссылок. Подсчет ссылок в это не входит. Я добавил свой собственный ответ, но вкратце, вы может расширяете область объекта с помощью привязки ссылки, но следует быть осторожным в своем дизайне. Не делайте этого, если вы этого не понимаете.
Я думаю, что он имел в виду подсчет ссылок, поскольку именно так вы мог возвращаете ссылку без выхода локального объекта за пределы в языках, которые поддерживают подсчет ссылок (C++, конечно, не является одним из них).
Я вижу, как термин «подсчет ссылок» запутывает проблемы, я пытался намекнуть на механизмы, которые есть в других языках, которые могут поддерживать выделенные объекты, возможно, не лучшая идея
Единственное место, где можно расширять область действия ссылкой, - это ссылка const в namespace или область действия функции (не с членами класса).
const int & cir = 1+1; // OK to use cir = 2 after this line
Этот трюк используется в очень крутом Андрея Александрескуохрана прицела для захвата ссылки const на базовый класс конкретной защиты области видимости.
Обратите внимание, что это всего лишь «расширение области действия» в том смысле, что обычно очень узкая «область действия» временного объекта расширяется до родительской области, что сильно отличается от того, что запрашивал OP. Престижность за упоминание малоизвестного аспекта C++, который сначала сбивает с толку многих людей.
ссылки действуют так же, как указатели, только их нельзя повторно привязать