Namespaces
Variants

std::complex<T>::complex

来自 zh.cppreference.net
 
 
 
 
主模板 (std::complex<T>)
complex( const T& re = T(), const T& im = T() );
(1) (C++14前)
constexpr complex( const T& re = T(), const T& im = T() );
(C++14起)
complex( const complex& other );
(2) (C++14前)
constexpr complex( const complex& other );
(C++14起)
(C++23前)
constexpr complex( const complex& other ) = default;
(C++23起)
template< class X >
complex( const complex<X>& other );
(3) (C++14前)
template< class X >
constexpr complex( const complex<X>& other );
(C++14起)
(C++23前)
template< class X >
constexpr explicit(/* see below */) complex( const complex<X>& other );
(C++23起)
标准显式特化 std::complex<float> (C++23前)
complex( float re = 0.0f, float im = 0.0f );
(1) (C++11前)
constexpr complex( float re = 0.0f, float im = 0.0f );
(C++11起)
constexpr complex( const complex<float>& other ) = default;
(2) (C++20起)
explicit complex( const complex<double>& other );
explicit complex( const complex<long double>& other );
(3) (C++11前)
constexpr explicit complex( const complex<double>& other );
constexpr explicit complex( const complex<long double>& other );
(C++11起)
标准显式特化 std::complex<double> (C++23前)
complex( double re = 0.0, double im = 0.0 );
(1) (C++11前)
constexpr complex( double re = 0.0, double im = 0.0 );
(C++11起)
constexpr complex( const complex<double>& other ) = default;
(2) (C++20起)
complex( const complex<float>& other );
explicit complex( const complex<long double>& other );
(3) (C++11前)
constexpr complex( const complex<float>& other );
constexpr explicit complex( const complex<long double>& other );
(C++11起)
标准显式特化 std::complex<long double> (C++23前)
complex( long double re = 0.0L, long double im = 0.0L );
(1) (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起)
complex( const complex<float>& other );
complex( const complex<double>& other );
(3) (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 要求,但各实现通常在所有模式下均将其实现为平凡构造函数。

另请参阅

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