Share via


complex::complex

Constructs a complex number with specified real and imaginary parts or as a copy of some other complex number.

constexpr complex( 
    const T& RealVal = 0,  
    const T& ImagVal = 0 
); 

constexpr complex( const complex& ); 

template<class Other> 
   constexpr complex( 
      const complex<Other>& ComplexNum 
   );

Parameters

  • RealVal
    The value of the real part used to initialize the complex number being constructed.

  • ImagVal
    The value of the imaginary part used to initialize the complex number being constructed.

  • ComplexNum
    The complex number whose real and imaginary parts are used to initialize the complex number being constructed.

Remarks

The first constructor initializes the stored real part to RealVal and the stored imaginary part to Imagval. The second constructor initializes the stored real part to ComplexNum**.real**() and the stored imaginary part to ComplexNum**.imag**().

In this implementation, if a translator does not support member template functions, the template:

template<class Other>
   complex(const complex<Other>& right);

is replaced with:

complex(const complex& right);

which is the copy constructor.

Example

// complex_complex.cpp
// compile with: /EHsc
#include <complex>
#include <iostream>

int main( )
{
   using namespace std;
   double pi = 3.14159265359; 

   // The first constructor specifies real & imaginary parts
   complex <double> c1 ( 4.0 , 5.0 );
   cout << "Specifying initial real & imaginary parts,"
        << "c1 = " << c1 << endl; 

   // The second constructor initializes values of the real &
   // imaginary parts using those of another complex number
   complex <double> c2 ( c1 );
   cout << "Initializing with the real and imaginary parts of c1,"
        << " c2 = " << c2 << endl; 

   // Complex numbers can be initialized in polar form
   // but will be stored in Cartesian form
   complex <double> c3 ( polar ( sqrt( (double)8 ) , pi / 4 ) );
   cout << "c3 = polar ( sqrt ( 8 ) , pi / 4 ) = " << c3 << endl; 

   // The modulus and argument of a complex number can be recovered
   double absc3 = abs ( c3 );
   double argc3 = arg ( c3 );
   cout << "The modulus of c3 is recovered from c3 using: abs ( c3 ) = "
        << absc3 << endl;
   cout << "Argument of c3 is recovered from c3 using:\n arg ( c3 ) = "
        << argc3 << " radians, which is " << argc3 * 180 / pi
        << " degrees." << endl;
}

Output

Specifying initial real & imaginary parts,c1 = (4,5)
Initializing with the real and imaginary parts of c1, c2 = (4,5)
c3 = polar ( sqrt ( 8 ) , pi / 4 ) = (2,2)
The modulus of c3 is recovered from c3 using: abs ( c3 ) = 2.82843
Argument of c3 is recovered from c3 using:
 arg ( c3 ) = 0.785398 radians, which is 45 degrees.

Requirements

Header: <complex>

Namespace: std

See Also

Reference

complex Class