复数运算库定义了一个类: complex 类。complex 类的对象可以存放一个复数。复数由两部分构成:
实部
虚部
class complex { double re, im; }; |
complex 类的对象值是一对 double 值。第一个值表示实部,第二个值表示虚部。
有两个用于 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 函数(请参见15.3 数学函数)创建复数。polar 函数根据给定的极坐标幅度和角度创建复数值。
没有用于 complex 类型的析构函数。
复数运算库定义了所有基本的算术运算符。具体来说,以下运算符按一般方法和普通的优先级工作:
+ - / * =
减法运算符 (-) 具有其通常的二元和一元含义。
此外,您可以按通常的方法使用以下运算符:
加法赋值运算符 (+=)
减法赋值运算符 (-=)
乘法赋值运算符 (*=)
除法赋值运算符 (/=)
但是,若将以上四个运算符用于表达式,则不产生任何值。例如,下列表达式无法进行运算:
complex a, b; ... if ((a+=2)==0) {...}; // illegal b = a *= b; // illegal |
另外还可以使用等号 (==) 和不等号 (!=),它们具有常规含义。
将运算表达式中的实数和复数混合时,C++ 使用复数运算符函数并将实数转换为复数。