Главная » C++, C++ Builder » Оператор using

0

 

Оператор using в C++ убирает необходимость употреблять имя области namespace в данном блоке кода. Например, если у вас есть несколько классов, определенных  в области namespace std, то выражение

using namespace std;

позволяет вам обращаться к любому классу в этой области без указания  модификатора  std::. Однако такое изменение отразится также на всех других классах и областях namespace в системе. Предположим, что в нашем прошлом примере областей fred и george вы бы написали:

using namespace fred; using namespace george;

int func(void)

{

A anAObject;

}

Что в данном случае означает A в функции func? Это из области fred или из области george? Мы и сами этого не знаем, а уж компилятор и подавно. Ситуация еще более осложнится, если класс A описан вне всяких областей namespace. Представьте, что вы написали свой собственный класс list, который делает что-нибудь совершенно другое, чем класс list из STL. Тогда, если использовать выражение using для области  namespace std, то напрямую  к классу list обратиться будет невозможно. Вам придется по-прежнему использовать оператор разрешения видимости (scope operator, ::), так что весь смысл областей namespace в данном случае потеряется. Так что я советую вам закусить удила и использовать оператор разрешения видимости std:: для использования классов STL в вашем приложении. был  придуман не для  новых разработок,  а скорее для поддержки уже существующего кода, работающего с заголовочными файлами, которые позже были помещены в область namespace. Если у вас есть программа, написанная пару лет назад и использующая STL, то вы можете решить проблему с областью namespace std при помощи оператора using. В новых разработках, однако, вам стоит всегда использовать оператор std :: для доступа к вашим классам в области namespace std.

А теперь мы вернемся к нашей дискуссии о классах STL.

Источник: Теллес М. – Borland C++ Builder. Библиотека программиста – 1998

По теме:

  • Комментарии