Программирование.

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

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

Например:

Int х; // глобальное х.

F() {

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

{

Int х; // прячет первое локальное х.

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

}

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

}

Int* р = &х // взять адрес глобального х.

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

F().

{

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

}

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

Int х;

F() {

Int х = х; // извращение.

}