public member function
<complex>
initialization (1) | complex (const T& re = T(), const T& im = T()); |
---|
copy (2) | complex (const complex& x); |
---|
conversion (3) | template<class U> complex (const complex<U>& x); |
---|
Complex number constructor
Constructs a complex object.
It may be constructed from two values (re and im) or from another complex.
The
float
,
double
and
long double
specializations only allow explicit conversions to types with lower precision. Their constructors are declared as:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
template<> class complex<float> {
complex (float re = 0.0f, float im = 0.0f);
explicit complex (const complex<double>& x);
explicit complex (const complex<long double>& x);
// ... (other members)
}
template<> class complex<double> {
complex (double re = 0.0, double im = 0.0);
complex (const complex<float>& x);
explicit complex (const complex<long double>& x);
// ... (other members)
}
template<> class complex<long double> {
complex (long double re = 0.0L, long double im = 0.0L);
complex (const complex<float>& x);
complex (const complex<double>& x);
// ... (other members)
}
|
The
float
,
double
and
long double
specializations have
constexpr
constructors and only allow explicit conversions to types with lower precision. Their constructors are declared as:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
template<> class complex<float> {
constexpr complex (float re = 0.0f, float im = 0.0f);
explicit constexpr complex (const complex<double>& x);
explicit constexpr complex (const complex<long double>& x);
// ... (other members)
}
template<> class complex<double> {
constexpr complex (double re = 0.0, double im = 0.0);
constexpr complex (const complex<float>& x);
explicit constexpr complex (const complex<long double>& x);
// ... (other members)
}
template<> class complex<long double> {
constexpr complex (long double re = 0.0L, long double im = 0.0L);
constexpr complex (const complex<float>& x);
constexpr complex (const complex<double>& x);
// ... (other members)
}
|
To construct a complex object from its polar form, see function polar.
Parameters
- re, im
- Real and imaginary parts, respectively, of the complex number.
T is complex's template parameter.
- x
- A complex object.
If constructed from a complex object with a different template parameter (U), the appropriate conversions are performed.
Example
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
// complex constructor example
#include <iostream> // std::cout
#include <complex> // std::complex
int main ()
{
std::complex<double> first (2.0,2.0);
std::complex<double> second (first);
std::complex<long double> third (second);
std::cout << third << '\n';
return 0;
}
|
Output:
Exception safety
Narrowing conversions on floating-point types may produce undefined behavior (when the value is too small or too great to be represented by the type). Otherwise, constructing a complex never throws exceptions.
See also
- polar
- Complex from polar components (function template)
- complex::real
- Real part (public member function)
- complex::imag
- Imaginary part (public member function)