На этом шаге мы приведем общие сведения о комплексных числах.
В стандартную библиотеку C++ входит шаблонный класс complex<>, предназначенный для работы с комплексными числами. На всякий случай стоит напомнить, что комплексные числа состоят из двух частей: вещественной и мнимой. Особое свойство мнимой части заключается в том, что ее квадрат является отрицательным числом. Иначе говоря, мнимая часть представляет собой произведение числа и квадратного корня из -1, обозначаемого символом i.
Класс complex объявляется в заголовочном файле <complex>:
  #include <complex>
Определение класса complex в файле <complex> выглядит так:
  namespace std {
    template <class T>
    class complex; 
}
Параметр шаблона Т задает скалярный тип как вещественной, так и мнимой части комплексного числа.
В стандартную библиотеку C++ включены также три специализированные версии класса complex для типов float, double и long double:
namespace std {
  tempiate<> class complex<float>;
  tempiate<> class complex<double>;
  tempiate<> class complex<long double>; 
}
Определения этих типов позволяют выполнять некоторые виды оптимизации и безопасное преобразование от одного комплексного типа к другому.
На следующем шаге мы рассмотрим пример использования этого класса.