Глава 24. Пространства имен 691
// Глобальная функция Bark()
void Bark()
{
cout « "Whoof!\n";
}
namespace Dog {
void Bark() { cout « "Yip yip!\n"; }
}
void.main() ( • .
// Объявление using
using Data::z;
' // Вывод значения Data::z cout « z « "\n";
// Вывод значения Data::z cout « Data::z « "\n"; *
// Ошибка — i не было поднято // cout « i « "\n";
// Вывод значения Data::! cout « Data::! « "\n";
// Директива using using namespace Functions;
// Вызов Functions::Fund() Fund() ;
// Ошибка — Functions::Bark() и глобальная Bark О конфликтуют // Bark() ;
// Вызов глобальной Bark() ::Bark() ;
// Другая директива using using namespace Dog;
// Ошибка — конфликтуют Functions::Bark(), Dog::Bark() и // глобальная Bark() // Bark() ;
Здесь имеется три пространства имен. Первое, Functions, содержит только функции Fund () и Bark (). Второе, Data, содержит определения двух переменных: i и z. Последнее пространство, Dog, содержит только определение его собственной функции Bark ().
В main о представлен пример объявления using и двух директив using. Объявление поднимает на текущий уровень только переменную z, а переменная