Глава 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, а переменная