Область
Имена C++ можно использовать только в некоторых областях программы. Эта область называется областью видимости имени. Область видимости определяет время существования имени, которое не обозначает статический объект. Область также определяет видимость имени, когда вызываются конструкторы и деструкторы классов и когда инициализируются переменные, являющиеся локальными для данной области видимости. (Дополнительные сведения см. в разделах Конструкторы и Деструкторы.) Существует пять типов области видимости.
Локальная область Имя, объявленное в блоке, доступно только в этом блоке и вложенных в него блоках и только после объявления. Имена формальных аргументов функции в области внешнего блока функции имеют локальную область видимости, как если бы они были объявлены внутри блока, включающего тело функции. Рассмотрим следующий фрагмент кода:
{ int i; }
Поскольку объявление i находится в блоке, заключенном в фигурные скобки, i имеет локальную область и никогда не доступно, потому что никакой код не осуществляет доступ к нему до закрытия фигурной скобки.
Область функций Метки — это единственные имена, имеющие область функции. Их можно использовать в любом месте функции, однако они недоступны за пределами этой функции.
Область файлов Любое имя, объявленное за пределами всех блоков или классов, имеет область файлов. Она доступна в любом месте записи преобразования после объявления. Имена с областью файлов, не объявляющие статические объекты, часто называются глобальными именами.
В C++ область файлов также известна как область пространства имен.
Область классов Имена членов класса имеют область видимости "класс". Функции-члена класса доступны только с помощью операторов выбора элементов (. или –>) или операторов указателей на элементы (.* или –>*) для объекта или указателя на объект этого класса; данные о нестатических членах классов считаются локальными по отношению к объекту этого класса. Рассмотрим следующее объявление класса.
class Point { int x; int y; };
Считается, что члены класса x и y находятся в области класса Point.
Область прототипов Имена, объявленные в прототипе функции, видны только до конца прототипа. Следующий прототип объявляет три имя (strDestination, numberOfElements и strSource); эти имена находятся вне области в конце прототипа.
errno_t strcpy_s( char *strDestination, size_t numberOfElements, const char *strSource );