Пространства имён
Варианты
Действия

std::complex::complex

Материал из cppreference.com
< cpp‎ | numeric‎ | complex
 
 
 
std::complex
Функции-элементы
complex::complex
Функции, не являющиеся элементами
Экспоненциальные функции
Степенные функции
Тригонометрические функции
(C++11)
(C++11)
(C++11)
Гиперболические функции
(C++11)
(C++11)
(C++11)
 
Основной шаблон (std::complex<T>)
(1)
complex( const T& re = T(), const T& im = T() );
(до C++14)
constexpr complex( const T& re = T(), const T& im = T() );
(начиная с C++14)
(2)
complex( const complex& other );
(до C++14)
constexpr complex( const complex& other );
(начиная с C++14)
(до C++23)
constexpr complex( const complex& other ) = default;
(начиная с C++23)
(3)
template< class X >
complex( const complex<X>& other );
(до C++14)
template< class X >
constexpr complex( const complex<X>& other );
(начиная с C++14)
(до C++23)
template< class X >
explicit(/* смотрите ниже */) constexpr complex( const complex<X>& other );
(начиная с C++23)
Явные специализации для std::complex<float> (до C++23)
(1)
complex( float re = 0.0f, float im = 0.0f );
(до C++11)
constexpr complex( float re = 0.0f, float im = 0.0f );
(начиная с C++11)
constexpr complex( const complex<float>& other ) = default;
(2) (начиная с C++20)
(3)
explicit complex( const complex<double>& other );
explicit complex( const complex<long double>& other );
(до C++11)
explicit constexpr complex( const complex<double>& other );
explicit constexpr complex( const complex<long double>& other );
(начиная с C++11)
Явные специализации для std::complex<double> (до C++23)
(1)
complex( double re = 0.0, double im = 0.0 );
(до C++11)
constexpr complex( double re = 0.0, double im = 0.0 );
(начиная с C++11)
constexpr complex( const complex<double>& other ) = default;
(2) (начиная с C++20)
(3)
complex( const complex<float>& other );
explicit complex( const complex<long double>& other );
(до C++11)
constexpr complex( const complex<float>& other );
explicit constexpr complex( const complex<long double>& other );
(начиная с C++11)
Явные специализации для std::complex<long double> (до C++23)
(1)
complex( long double re = 0.0L, long double im = 0.0L );
(до C++11)
constexpr complex( long double re = 0.0L, long double im = 0.0L );
(начиная с C++11)
constexpr complex( const complex<long double>& other ) = default;
(2) (начиная с C++20)
(3)
complex( const complex<float>& other );
complex( const complex<double>& other );
(до C++11)
constexpr complex( const complex<float>& other );
constexpr complex( const complex<double>& other );
(начиная с C++11)

Создает объект std::complex. Явные специализации для (std::complex<float>, std::complex<double> иstd::complex<long double>) имеют объявления конструкторов отдельные от основного шаблона (до C++23)

1) Создает комплексное число по вещественной части re и мнимой части im.
2) Конструктор копирования. Создает объект с копией содержимого other. Конструкторы копирования неявно объявляются в явных специализациях.. (до C++20)
3) Конструктор преобразования. Создает объект из комплексного числа другого типа.

Основной шаблон предоставляет конвертирующий шаблон конструктора, в то время как каждая стандартная явная специализация предоставляет два нешаблонных конструктора для двух других стандартных явных специализаций.

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

(до C++23)

Для основного шаблона выражение внутри explicit оценивается в false тогда и только тогда, когда ранг преобразования с плавающей точкой T больше или равен рангу преобразования с плавающей точкой X.

(начиная с C++23)

[править] Параметры

re вещественная часть
im мнимая часть
other ругое комплексное число для использования в качестве исходного

[править] Примечание

Начиная с C++23, конструктор копирования долже тривиальным, чтобы удовлетворять требованию TriviallyCopyable, но реализации обычно делают его тривиальным во всех режимах.

[править] Смотрите также

присваивает содержимое
(public функция-элемент) [править]
литерал std::complex, представляющий чисто мнимое число
(функция) [править]