Namespaces
Variants

std::complex<T>:: complex

From cppreference.net
主模板 ( 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 >
constexpr explicit ( /* 见下文 */ ) 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前)
constexpr explicit complex ( const complex < double > & other ) ;
constexpr explicit 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 ) ;
constexpr explicit 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) 转换构造函数 。从不同类型的复数构造对象。

主模板提供一个转换构造函数模板,而每个标准显式特化则为另外两个标准显式特化提供两个非模板构造函数。

当且仅当实部和虚部的转换不是窄化转换时,非模板构造函数才是转换构造函数(即非 explicit)。

(C++23 前)

对于主模板,当且仅当 T 浮点转换等级 大于或等于 X 的浮点转换等级时, explicit 内部的表达式求值为 false

(C++23 起)

参数

re - 实部
im - 虚部
other - 用作源的另一个复数

注释

自 C++23 起,拷贝构造函数需满足 平凡 条件才能符合 TriviallyCopyable 要求,但各实现通常在所有模式下均将其实现为平凡构造函数。

另请参阅

赋值内容
(公开成员函数)
表示纯虚数的 std::complex 字面量
(函数)
C 文档 关于 CMPLX