Complex.h
/* 防止代码被重复编译 */
#ifndef __COMPLEX__
#define __COMPLEX__
#include <iostream.h>
class Complex
{
public:
/*
1. 优先选择使用初始化列表
2. 可以传递引用,由于double和指针的大小相同,所以两种方式在此处无区别
3. 默认参数是为了Complex c、Complex c(1)两种定义形式
*/
Complex(double r = 0, double i = 0)
:re(r), im(i)
{
}
/*
1.传参引用减少传递大小压力,32位机传递引用(4字节),传值(8字节)
2. 类成员函数默认第一个参数是类对象指针(this),所以只需要显示传递一个参数
3. 不会修改右值,使用const修饰
4. 为了实现c3 += c2 += c1,必须有返回
*/
Complex &operator += (const Complex &r);
/*
1. 不会改变成员变量的值,所以使用const修饰
2. 在类内部实现,默认为inline函数
*/
double real() const
{
return re;
}
double imag() const
{
return im;
}
private:
double re;
double im;
/* 通过友元,全局函数可以通过类对象的访问私有成员 */
friend Complex& __doapl(Complex *, const Complex &);
friend ostream & operator << (o