Поделиться через


Область

Имена 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 );
    

См. также

Ссылки

Основные понятия