Oracle Solaris Studio 12.2:C++ 用户指南

14.2 complex 类型

复数运算库定义了一个类:complex 类。complex 类的对象可以存放一个复数。复数由两部分构成:


class complex {
    double re, im;
};

complex 类的对象值是一对 double 值。第一个值表示实部,第二个值表示虚部

14.2.1 complex 类的构造函数

有两个用于 complex 的构造函数。它们的定义是:


complex::complex()            {re=0.0; im=0.0;}
complex::complex(double r, double i = 0.0) {re=r; im=i;}

如果声明复数变量时没有指定参数,则会使用第一个构造函数并初始化变量,因此两个部分都为 0。以下示例创建了一个其实部和虚部均为 0 的复数变量。


complex aComp;

您可以给定一个或两个参数。无论是以上哪种情况,都将使用第二个构造函数。如果只给定一个参数,该参数将作为实部的值,而虚部的值设置为 0。例如:


complex aComp(4.533);

用下列值创建一个复数变量:


4.533 + 0i

如果给定了两个值,第一个值被视为实部的值,而第二个值被视为虚部的值。例如:


complex aComp(8.999, 2.333);

用下列值创建一个复数变量:


8.999 + 2.333i

也可以使用复数运算库中提供的 polar 函数(请参见14.3 数学函数)创建复数。polar 函数根据给定的极坐标幅度和角度创建复数值。

没有用于 complex 类型的析构函数。

14.2.2 算术运算符

复数运算库定义了所有基本的算术运算符。具体来说,以下运算符按一般方法和普通的优先级工作:

+ - / * =

减法运算符 (-) 具有其通常的二元和一元含义。

此外,您可以按通常的方法使用以下运算符:

但是,若将以上四个运算符用于表达式,则不产生任何值。例如,下列表达式无法进行运算:


complex a, b;
...
if ((a+=2)==0) {...}; // illegal
b = a *= b; // illegal

另外还可以使用等号 (==) 和不等号 (!=),它们具有常规含义。

将运算表达式中的实数和复数混合时,C++ 使用复数运算符函数并将实数转换为复数。