printУлучшения языка C

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

Разные разработчики библиотек могут определить глобальные объекты с одинаковыми именами или функции с одинаковыми именами и параметрами. Чтобы избежать конфликта имен при использовании этих библиотек в одной программе, в С++ появилась возможность разделения глобального пространства имен. Каждый разработчик должен определить свое пространство имен:
namespace имя {
  объявления и определения
}
Описания, относящиеся к одному пространству имен, могут быть разделены на несколько модулей. Можно определять вложенные пространства имен.

Обращаться к объектам и функциям из того же пространства имен можно напрямую. При использовании этих объектов и функций вне этого пространства, нужно либо обращаться указывая их полное имя: имя пространства имен::имя функции(аргументы), либо сделать их доступными для прямого использования с помощью оператора
using имя пространства имен::имя функции;
или
using namespace имя пространства имен;

По умолчанию все глобальные объекты и функции определяются в неименованном пространстве имен. Можно обращаться к глобальному объекту следующим образом:
int x=1;
int main()
{ int x=2;
  cout << x << "\n"; // 2
  cout << ::x << "\n"; // 1
}
Все объекты и функции стандартной библиотеки C++ STL определены в пространстве имен std. Поэтому необходимо в программе указывать оператор using:
#include <iostream>
using namespace std;
int main()
{ cout<<"Hello, world!\n";
}
Существуют также варианты заголовочных файлов для стандартной библиотеки C, в которых все функции объявлены в пространстве имен std. Например, <cstdio> содержит объявления из <stdio.h> (для получения имени C++ варианта из имени файла заголовочного файла C нужно убрать ".h" и добавить букву "с" в начале).
loading