Язык программирования C++. Вводный курс


Использование пространства имен - часть 2


Cplusplus_Primer_3E::Array<string> text;

IBM_Canada_Laboratory::Matrix mat;

Disney_Feature_Animation::Point origin(5000,5000);

Для удобства использования можно назначать псевдонимы

пространствам имен. Псевдоним выбирают коротким и легким для запоминания. Например:

// псевдонимы

namespace LIB = IBM_Canada_Laboratory;

namespace DFA = Disney_Feature_Animation;

 

int main()

{

  LIB::Array<int> ia(1024);

}

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

namespace LIB = Cplusplus_Primer_3E;

int main()

{

  LIB::Array<int> ia(1024);

}

Конечно, чтобы это стало возможным, необходимо точное совпадение интерфейсов классов и функций, объявленных в этих пространствах имен. Представим, что класс Array из Disney_Feature_Animation не имеет конструктора с одним параметром – размером. Тогда следующий код вызовет ошибку:

namespace LIB = Disney_Feature_Animation;

 

int main()

{

  LIB::Array<int> ia(1024);

}

Еще более удобным является способ использования простого, неквалифицированного имени для обращения к объектам, определенным в некотором пространстве имен. Для этого существует директива using:

#include "IBM_Canada_Laboratory.h"

 

using namespace IBM_Canada_Laboratory;

 

int main()

{

  // IBM_Canada_Laboratory::Matrix

  Matrix mat(4,4);

 

  // IBM_Canada_Laboratory::Array

  Array<int> ia(1024);

 

  // ...

}

Пространство имен IBM_Canada_Laboratory

становится видимым в программе. Можно сделать видимым не все пространство, а отдельные имена внутри него (селективная директива using):

#include "IBM_Canada_Laboratory.h"

 

using namespace IBM_Canada_Laboratory::Matrix;

// видимым становится только Matrix




Начало  Назад  Вперед