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++ 使用复数运算符函数并将实数转换为复数。