/* * 程序的版权和版本声明部分 * Copyright (c)2012, 烟台大学计算机学院学生 * All rightsreserved. * 文件名称: object.cpp * 作者:赵 洋 * 完成日期: 2013年4 月12 日 * 版本号: v1.0 * 输入描述:无 * 问题描述:复数的加法运算,用友元类 * 程序输出: */ #include<iostream> using namespace std; template<class numtype> class Complex {public: Complex (){real=0;imag=0;} Complex(numtype a,numtype b){real=a;imag=b;} Complex complex_add(Complex &c2); Complex complex_cut(Complex &c7); Complex complex_multiply(Complex &c13); void display(); private: numtype real,imag; }; template <class numtype> Complex<numtype> Complex<numtype>::complex_add(Complex &c2) { Complex<numtype> c; c.real=real+c2.real; c.imag=imag+c2.imag; return c; } template <class numtype> Complex<numtype> Complex<numtype>::complex_cut(Complex &c7) { Complex<numtype> c; c.real=real-c7.real; c.imag=imag-c7.imag; return c; } template <class numtype> Complex<numtype> Complex<numtype>::complex_multiply(Complex &c13) { Complex<numtype> c; c.real=real*c13.real-imag*c13.imag; c.imag=real*c13.imag+c13.real*imag; return c; } template <class numtype> void Complex<numtype>::display() { cout<<"("<<real<<","<<imag<<"i)"<<endl; } int main( ) { Complex<int> c1(3,4),c2(5,-10),c3; c3=c1.complex_add(c2); cout<<"c1+c2="; c3.display( ); Complex<double> c4(3.1,4.4),c5(5.34,-10.21),c6; c6=c4.complex_add(c5); cout<<"c4+c5="; c6.display( ); //下面测试减法、乘法和除法 Complex<int> c7(3,4),c8(5,-10),c9; c9=c7.complex_cut(c8); cout<<"c7-c8="; c9.display( ); Complex<double> c10(3.1,4.4),c11(5.34,-10.21),c12; c12=c10.complex_cut(c11); cout<<"c10-c11="; c12.display( ); Complex<int> c13(3,4),c14(5,-10),c15; c15=c13.complex_multiply(c14); cout<<"c13*c14="; c15.display( ); Complex<double> c16(3.1,4.4),c17(5.34,-10.21),c18; c18=c16.complex_cut(c17); cout<<"c16*c17="; c18.display( ); system("pause"); return 0; }
运行结果: