C++/Сокрытие имён

Материал из Энциклопедия о программировании
Перейти к: навигация, поиск

Сокрытие имён (сокрытие переменной) в C++ — ситуация, когда переменная во вложенном (внутреннем) блоке (области видимости) называется также как и переменная снаружи, тем самым делая так, что нельзя получить доступ к внешней переменной без специальных операций.

Переменная внутри вложенного блока может иметь то же имя, что и переменная внутри внешнего блока. Когда подобное случается, то переменная во вложенном (внутреннем) блоке «скрывает» внешнюю переменную. Это называется сокрытием имен.

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

Примеры

Сокрытие внешней переменной I и получение к ней доступа:

int I;
void fnc() {
	int I, i = 1;
	::I = 5;
}

Создание переменной I во внешней области видимости, и создание перемененной I в области видимости функции fnc. При создании переменной во внутренней области с таким же именем, что и во внешней области, к которой есть доступ, происходит создание новой переменной, которая уникальна именно для локальной области видимости, это называется сокрытием переменной. При этом получить доступ к переменной I из внешней области видимости можно при помощи оператора разрешения области видимости «два двоеточия» (::). Так как у внешней области нет имени, то перед двоеточиями ничего не пишется.