Справочник по C/C++
Пространства имён

Ключевое слово namespace позволяет разделить глобальное пространство имен путем создания некоторой декларативной области. По сути, пространство имен определяет область видимости. Общая форма задания пространства имен
имеет следующий вид.

namespace имя {
	//Объявления
}

Помимо именованных, можно иметь и безымянные пространства имен.

namespace {
	//Объявления
}

Безымянные пространства имен позволяют установить уникальные идентификаторы, которые известны только внутри области видимости одного файла.

Безымянные пространства имен позволяют установить уникальные идентификаторы, которые известны только внутри области видимости одного файла.

Приведем пример использования ключевого слова namespace.

namespace MyNameSpace {
	int i, k;
	void myfunc(int j) { cout << j; }
}

Здесь переменные i, k и функция myfunc() являются частью области видимости, определенной пространством имен MyNameSpace.

Поскольку пространство имен определяет область видимости, для доступа к определенным внутри нее объектам необходимо использовать оператор разрешения видимости. Например, чтобы присвоить значение 10 переменной i, необходимо использовать следующий оператор.

MyNameSpace::i = 10;

 

Оператор using

Если члены пространства имен будут использоваться часто, то для упрощения доступа к ним можно применить директиву using. Оператор using имеет две общие формы записи.

using namespace имя;
using имя::член;

В первой форме элемент имя задает имя пространства имен, к которому вы хотите получить доступ. Все члены, определенные внутри заданного пространства имен, можно затем использовать без квалификации. Во второй форме делается видимым только указанный член пространства имен. Например, предполагая, что пространство имен MyNameSpace определено(как показано выше), следующие операторы using и присваивания будут вполне законными.

using MyNameSpace::k;		//только переменная k сделана видимой
k = 10;				//OK, поскольку переменная k видима
using namespace MyNameSpace;	//все члены MyNameSpace видимы
i = 10;				//OK, поскольку все члены MyNameSpace сейчас видимы





Нет комментариев.



Оставить комментарий:
Ваше Имя:
Email:
Антибот: *  
Ваш комментарий: