Шаг 89.
Microsoft Visual C++ 2010. Язык С/С++.
Ввод и вывод в языках C и C++. Ввод/вывод в языке C++. Пространства имен

    На этом шаге мы рассмотрим назначение, создание и особенности использования пространства имен.

    Многие серьезные приложения состоят из нескольких программных файлов (с исходным текстом программ), которые создаются и обслуживаются отельными группами программистов. И только после этого все файлы собираются в общий проект. Но как быть с тем фактом, что в таких файлах могут быть одинаково объявлены некоторые разные переменные? В C++ это неудобство разрешается с помощью так называемых пространств имен, которые вводятся в каждый составляющий единый проект текстовый программный файл с помощью директивы:

 namespace <имя пространства имен (идентификатор)> 
    {в эти скобки заключается весь программный текст}

    Когда идет сборка общего проекта, то в итоговом тексте пишут директиву:

  using namespace идентификатор пространства имен;

    Это обеспечивает в итоговом проекте доступ к переменным файла с данным пространством имен. При использовании поточных классов языка C++ в основной программе требуется писать директиву:

  using namespace std;

    В противном случае программа не пройдет компиляцию.

    Ниже приведен пример использования директив пространства имен, результат работы программы показан на рисунке 1.

// 89_1.cpp: главный файл проекта.

#include "stdafx.h"
#include <iostream> 
#include <conio.h>

using namespace System;

namespace F {
	float x = 9;
}
namespace G {
	using namespace F; //здесь само пространство G
	                   //использует пространство F и 
	                   //в нем же объявляется еще 
	                   //одно пространство: INNER_G 
	float y = 2.0;
	namespace INNER_G {
		float z = 10.01;
	}
} // G

void main()
{
	using namespace G;  //эта директива позволяет пользоваться
                        //всем, объявленным в "G"
	using namespace G::INNER_G;  //эта директива позволяет
                                 //пользоваться только тем, 
	                             //что объявлено в "INNER_G" 
	float x = 19.1;    //локальное объявление переопределяет
	                   //предыдущее

	std::cout << "x = " << x <<std::endl;
	std::cout << "y = " << y <<std::endl; // у берется из пространства F
	std::cout << "z = " << z <<std::endl; // у берется из пространства INNER_G

	_getch();
}
Архив проекта можно взять здесь.


Рис.1. Результат работы приложения

    Обратите внимание: чтобы воспользоваться содержимым пространства имен INNER_G недостаточно подключить пространство имен G; нужно отдельной строкой прописать подключение пространства имен INNER_G!

    std::cout - это стандартный вывод. Его мы рассмотрим чуть позже. Здесь cказано, что объект cout принадлежит пространству имен std.

    Мы могли бы в основной программе записать:

  using namespace std;

    Тогда бы вместо std::cout можно было бы писать просто cout.

    Итак, при составлении программы с использованием поточных файлов в начале основной программы следует записать директиву:

  using namespace std;

    На следующем шаге мы рассмотрим работу с классом fstream.




Предыдущий шаг Содержание Следующий шаг