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

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

Разные разработчики библиотек могут определить глобальные объекты с одинаковыми именами или функции с одинаковыми именами и параметрами. Чтобы избежать конфликта имен при использовании этих библиотек в одной программе, в С++ появилась возможность разделения глобального пространства имен. Каждый разработчик должен определить свое пространство имен:
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" и добавить букву "с" в начале).

Также using используется для задания альтернативных имен для типов:
using point=pair<double,double>; // точка - это пара из двух вещественных чисел
using vi=vector<int>; // короткое имя
В отличие от typedef в языке С, который используется для тех же целей, у using можно указать параметры шаблона.
loading