29. Описание и скрытие имен

29. Описание и скрытие имен

Описание определяет имя в области видимости. Таким образом, имя может применяться только в некоторой части программы. Для имени, которое описано в функции (такое имя часто называют локальным), эта область видимости располагается от точки описания до конца блока, в котором появилось описание. Для имени не в функции и не в классе (называемого часто глобальным именем) область видимости находится от точки описания до конца файла, в котором появилось описание. Описание имени в блоке может прятать описание во внутреннем блоке или глобальное имя, т. е. можно переопределять имя внутри блока с целью ссылки на другой объект. После выхода из блока имя опять получает свое прежнее значение.

Например:

int x; // глобальное x

f() {

int x; // локальное x прячет глобальное x x = 1; // присвоить локальному x

{

int x; // прячет первое локальное x

x = 2; // присвоить второму локальному x

}

x = 3; // присвоить первому локальному x

}

int* p = &x // взять адрес глобального x

Скрытие имен обязательно при написании больших программ. Но читающий человек легко может не заметить, что имя скрыто, и некоторые ошибки, которые возникают вследствие этого, очень тяжело обнаружить, в основном потому, что они редкие. Применение для глобальных переменных имен i или x напрашивается на неприятности. С помощью операции разрешения области видимости:: можно применять скрытое глобальное имя. Например: int x;

f()

{

int x = 1; // скрывает глобальное x::x = 2; // присваивает глобальному x

}

Однако возможности применять скрытое локальное имя нет. Область видимости имени начинается точкой описания. То есть имя можно применять даже для задания его собственного значения. К примеру:

int x;

f() {

int x = x; // извращение

}

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Скрытие и отображение

Из книги Тонкости реестра Windows Vista. Трюки и эффекты автора Клименко Роман Александрович


Скрытие вкладок

Из книги Excel. Мультимедийный курс автора Мединов Олег

Скрытие вкладок Например, при необходимости можно удалить вкладку Сеть. Для этого в разделе HKEY_CURRENT_USERSoftwarePoliciesMicrosoftWindowsMediaPlayer необходимо создать REG_DWORD-параметр HideNetworkTab и присвоить ему значение 1. Ниже приведен текст соответствующего REG-файла (расположение на компакт-диске


Скрытие строк и столбцов

Из книги 3ds Max 2008 для дизайна интерьеров автора Семак Рита

Скрытие строк и столбцов При работе с таблицей Excel нередко используют множество ячеек, содержащих, например, формулы, какие-либо константы, редко изменяемые данные, которые участвуют в подсчетах различных итогов, но не должны отображаться на экране или в распечатанном


Скрытие объектов

Из книги Основы объектно-ориентированного программирования автора Мейер Бертран

Скрытие объектов Чтобы облегчить управление сложными сценами, используют скрытие объектов. Это ускоряет отрисовку объектов в окнах проекций, в результате чего возрастает скорость работы. Скрытые объекты невидимы, и их нельзя выделить.Скрыть объекты можно несколькими


Скрытие информации (information hiding)

Из книги Описание работы пакета OOoFBTools Создание книг FB2 автора Кузнецов Вадим

Скрытие информации (information hiding) При создании класса зачастую в него приходится включать компонент, необходимый только для внутренних целей, являющийся частью реализации класса, но не его интерфейса. Другие компоненты этого класса, - возможно, доступные клиентам, - могут


Скрытие информации

Из книги HTML 5, CSS 3 и Web 2.0. Разработка современных Web-сайтов. автора Дронов Владимир

Скрытие информации Правило Скрытия Информации можно сформулировать следующим образом: Разработчик каждого модуля должен выбрать некоторое подмножество свойств модуля в качестве официальной информации о модуле, доступной авторам клиентских модулей.Применение этого


У3.3 Ограничения на скрытие информации

Из книги HTML 5, CSS 3 и Web 2.0. Разработка современных Web-сайтов автора Дронов Владимир

У3.3 Ограничения на скрытие информации Представляете ли вы себе обстоятельства, при которых скрытие информации не должно применяться к связям между модулями?


Наследование и скрытие информации

Из книги C++. Сборник рецептов автора Диггинс Кристофер

Наследование и скрытие информации Последний вопрос, оставшийся пока без ответа, как наследование взаимодействует с принципом Скрытия информации.В отношениях между классом и его клиентами скрытие информации определяет разработчик класса. Именно он определяет политику


Ковариантность и скрытие потомком

Из книги Как пользоваться Интернетом после принятия закона «Об Интернете» автора Халявин Василий

Ковариантность и скрытие потомком Если бы мир был прост, то разговор о типизации можно было бы и закончить. Мы определили цели и преимущества статической типизации, изучили ограничения, которым должны соответствовать реалистичные системы типов, и убедились в том, что


Скрытие потомком

Из книги Недокументированные и малоизвестные возможности Windows XP автора Клименко Роман Александрович

Скрытие потомком Прежде чем искать решение проблемы ковариантности, рассмотрим еще один механизм, способный в условиях полиморфизма привести к нарушениям типа. Скрытие потомком (descendant hiding) - это способность класса не экспортировать компонент, полученный от


Описание работы пакета OOoFBTools I Конвертер ExportToFB21 1. Описание

Из книги автора

Описание работы пакета OOoFBTools I Конвертер ExportToFB21 1. Описание 1.1. НазначениеКроссплатформенный конвертер ExportToFB21 предназначен для конвертации документов из форматов, поддерживаемых OpenOffice.org Writer в формат fb2.1.Т.о. входные форматы документов для ExportToFB21 следующие:.doc, dot, rtf, txt,


Скрытие и открытие текста примеров

Из книги автора

Скрытие и открытие текста примеров На Web-страницах, описывающих теги HTML и атрибуты стиля CSS, мы поместили текст примеров применения того или иного тега или атрибута стиля. Часто его делают скрывающимся и открывающимся в ответ на щелчок мышью — так можно сделать Web-страницы


Скрытие и открытие вложенных списков

Из книги автора

Скрытие и открытие вложенных списков Вложенные списки в полосе навигации чрезвычайно громоздки. Как бы сделать так, чтобы все они были скрыты и появлялись только при щелчке на пункте "внешнего" списка, в который они вложены?Легко!— Изначально все вложенные списки у нас


2.4. Предотвращение конфликта имен с помощью пространств имен

Из книги автора

2.4. Предотвращение конфликта имен с помощью пространств имен ПроблемаВ несвязанных между собой модулях обнаружены конфликтующие имена или требуется заранее избежать возможности таких конфликтов, создав логические группы кода.РешениеДля структурирования кода