JavaScript is required to for searching.
跳过导航链接
退出打印视图
Oracle Solaris Studio 12.2:C++ 用户指南
search filter icon
search icon

文档信息

前言

第 1 部分C++ 编译器

1.  C++ 编译器

2.  使用 C++ 编译器

3.  使用 C++ 编译器选项

第 2 部分编写 C++ 程序

4.  语言扩展

5.  程序组织

6.  创建和使用模板

7.  编译模板

8.  异常处理

9.  改善程序性能

10.  生成多线程程序

第 3 部分库

11.  使用库

12.  使用 C++ 标准库

13.  使用传统 iostream 库

14.  使用复数运算库

14.1 复数库

14.1.1 使用复数库

14.2 complex 类型

14.2.1 complex 类的构造函数

14.2.2 算术运算符

14.3 数学函数

14.4 错误处理

14.5 输入和输出

14.6 混合模式运算

14.7 效率

14.8 复数手册页

15.  生成库

第 4 部分附录

A.  C++ 编译器选项

B.  Pragma

词汇表

索引

14.6 混合模式运算

类型 complex 专门用于处理混合模式表达式中的内置运算类型。运算类型会缺省转换为 complex 类型,而且算术运算符和大多数数学函数都有 complex 版本。例如:

int i, j;
double x, y;
complex a, b;
a = sin((b+i)/y) + x/j;

表达式 b+i 是混合模式。整数 i 通过构造函数 complex::complex(double,double=0) 转换为类型 complex(整型数先是转换为类型 double)。所得结果除以 double 类型的 y,因此 y 也转换为 complex 且使用了复数除法运算。这样,得到的商是 complex 类型,因此调用复数正弦例程,从而生成另一个 complex 结果等。

但是,并非所有的数学运算符和转换都是暗示的(即使定义)。例如从数学角度,复数未较好排序,只能比较等式。

complex a, b;
a == b; // OK
a != b; // OK
a <  b; // error: operator < cannot be applied to type complex
a >= b; // error: operator >= cannot be applied to type complex

同样,由于未明确定义概念,因此不会自动将类型 complex 转换为其他类型。您可以指定是否需要实部、虚部或幅度。

complex a;
double f(double);
f(abs(a)); // OK
f(a);      // error: no match for f(complex)