Dela via


complex<long double>

Den här uttryckligen specialiserade klassmallen beskriver ett objekt som lagrar ett ordnat par objekt, båda av typen long double, den första som representerar den verkliga delen av ett komplext tal och det andra som representerar den imaginära delen.

Syntax

template <>
class complex<long double> {
public:
    constexpr complex(
    long double _RealVal = 0,
    long double _ImagVal = 0);

complex(
    constexpr complex<long double>& complexNum);

// rest same as class template complex
};

Parameters

_RealVal
Värdet av typen long double för den verkliga delen av det komplexa tal som skapas.

_ImagVal
Värdet av typen long double för den imaginära delen av det komplexa tal som skapas.

complexNum
Det komplexa antalet av typen double eller typen float vars verkliga och imaginära delar används för att initiera ett komplext antal typer long double som skapas.

Return Value

Ett komplext antal av typen long double.

Remarks

Den explicita specialiseringen av klassmallen complex till en komplex klass av typen long double skiljer sig bara från klassmallen i de konstruktorer som definieras. Konverteringen från long double till float tillåts vara implicit, men konverteringen från double till long double måste vara explicit. Användningen av utesluter initiering med typkonvertering med hjälp av explicit tilldelningssyntax.

Mer information om klassmallen complex och dess medlemmar finns i complex Klass.

Microsoft-specific: The long double and double types have the same representation, but are distinct types. For more information, see Built-in types.

Example

// complex_comp_ld.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<long double> c1( 4.0 , 5.0 );
    cout << "Specifying initial real & imaginary parts,\n"
        << " as type float gives c1 = " << c1 << endl;

    // The second constructor initializes values of the real &
    // imaginary parts using those of complex number of type float
    complex<float> c2float( 1.0 , 3.0 );
    complex<long double> c2longdouble ( c2float );
    cout << "Implicit conversion from type float to type long double,"
        << "\n gives c2longdouble = " << c2longdouble << endl;

    // The third constructor initializes values of the real &
    // imaginary parts using those of a complex number
    // of type double
    complex<double> c3double( 3.0 , 4.0 );
    complex<long double> c3longdouble( c3double );
    cout << "Implicit conversion from type long double to type float,"
        << "\n gives c3longdouble = " << c3longdouble << endl;

    // The modulus and argument of a complex number can be recovered
    double absc3 = abs( c3longdouble );
    double argc3 = arg( c3longdouble );
    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;
}
Specifying initial real & imaginary parts,
as type float gives c1 = (4,5)
Implicit conversion from type float to type long double,
gives c2longdouble = (1,3)
Implicit conversion from type long double to type float,
gives c3longdouble = (3,4)
The modulus of c3 is recovered from c3 using: abs( c3 ) = 5
Argument of c3 is recovered from c3 using:
arg( c3 ) = 0.927295 radians, which is 53.1301 degrees.

Requirements

Header: <complex>

Namespace:std

See also

complex klass
Trådsäkerhet i C++ Standard Library