#c
#c
Вопрос:
Рассмотрим некоторые части этого руководства здесь: https://www.learncpp.com /, существуют ли какие-либо существенные различия между «Областью действия блока» и «Локальной областью действия»? Или они просто синонимы?
Из того, что я понимаю:
Область действия блока — область действия начинается с открывающей фигурной скобки {
, заканчивается закрывающей фигурной скобкой }
.
Локальная область действия — область действия начинается с инициализации параметров функции, заканчивается фигурной скобкой, закрывающей функции }
.
Комментарии:
1. Насколько я понимаю, они во многом одинаковы, поскольку тело функции также можно интерпретировать как «блок». Пока вы понимаете, что все переменные, объявленные в иерархически более высоких блоках, действительны и в более низких блоках, все должно быть в порядке.
Ответ №1:
Люди говорят, что переменная находится в области блока, когда хотят подчеркнуть, что на самом деле это объект, который не существует вне блока, в котором они объявлены, и может повторно использовать имя для чего-то другого, например counter в for-loop . Однако, исходя из определения, они являются синонимами. При модульном тестировании я обычно помещаю отдельные тестовые входные данные в разные области блока, поэтому мне не приходится иметь дело с конфликтами имен.
Комментарии:
1. Будьте осторожны с терминологией здесь: «временный объект» создается «на лету» в выражении (обычно путем вызова функции, которая возвращает объект) и существует только до конца выражения , в котором он создан. В
std::cout << f() << 'n';
, гдеf()
возвращает, скажем, anint
, вызов функции создает временный объект, который исчезает при;
.2. конечно, отредактировано для уточнения.