4.2.5 编程(www.cppentry.com)题(3)
【例4.17】编写一个程序,声明复数的类Complex,使用友元函数add实现复数加法。
解:在Complex类中,用real、image分别表示复数的实部和虚部,设计相关成员函数,另设计add友元函数,用以实现两个复数对象相加并返回相加后的复数对象。程序如下:
- #include < iostream >
- using namespace std;
- class Complex
- {
- private:
- double real, image;
- public:
- Complex() {} //默认构造函数
- Complex(double a,double b) //带参构造函数
- { real=a;
- image=b;
- }
- void setdata(double a, double b) //设置数据成员值
- { real=a;
- image=b;
- }
- double getReal() //求实部
- { return real; }
- double getImage() //求虚部
- { return image; }
- void print() //输出一个复数
- { if (image>0)
- cout << "复数:" << real << "+" << image << "i" << endl;
- if (image<0)
- cout << "复数:" << real << "-" << -image << "i" << endl;
- }
- friend Complex add(Complex ,Complex); //声明友元函数
- };
- Complex add(Complex c1, Complex c2) //定义友元函数
- { Complex c3;
- c3.real=c1.real+c2.real; //访问Complex类中的私有成员
- c3.image=c1.image+c2.image;
- return c3;
- }
- void main()
- { Complex c1(2,5),c2,c3;
- c2.setdata(-6,-2);
- c3=add(c1,c2);
- cout << "复数1:"; c1.print();
- cout << "复数2:"; c2.print();
- cout << "相加后:"; c3.print();
- }
本程序的执行结果如下:
- 复数1:2+5i
- 复数2:-6-2i
- 相加后:-4+3i