如何利用运算符重载实现复数相加?
1、搭框架(写出主函数)。任何一个程序有且只有一个主函数,且从主函数开始的。那么基本的框架就是要定义类、实现复数相加(重载+运算符)、标准数据类型和类对象之间的转换。

2、搭框架(定义类)。定义一个复数类,将复数的实部和虚部设置为私有成员,对成员的初始化,并对运算符重载进行声明。注意:对流输入和流提取运算符的重载不能定义为成员函数,原因是成员函数的第一个参数为类成员,只能定义为友元函数。

3、逐步扩充(对输入流函数运算符的重载)。图中的input是istream类的一个引用,input是自定义的一名字。return input;语句的目的是能连续向输出流插入信息。图中函数体内的cout<<是c++标准的输出流。

4、逐步扩充(对输出流函数运算符的重载)。图中的output是ostream类的一个引用,output是自定义的一名字。return output;语句的目的是能连续向输出流插入信息。流提取运算符的重载只能用友元函数。

5、对“+”运算符的重载。图中将运算符重载函数定义为成员函数,因此只需要写出一个参数,第一个参数默认为本类的成员。同样还可以将运算符重载函数定义为友元函数,这样参数为两个。

6、类型转换函数和转换构造函数。转换构造函数使将一个其他类型的数据转化成类对象。例如,c=c1+2.5;执行时,编译系统首先识别是否对+运算符进行了重载,因为c为类对象,所以自动调用转换构造函数。类型转换函数是将一个类对象转化为其他类型的,原理和转换构造函数相似。

7、运算结果以及完善。从图中的结果可以看到前两个的结果为类的对象-----即一个复数,而最后一个结果为一个double类型的数--3.7 。 其中就是运用了类型转换函数和转换构造函数。在输出时,考虑到虚部为复数的情况,则增加了条件语句,对程序进行完善。
