/* * Copyright (c) 2013, 烟台大学计算机学院 * All rights reserved. * 作 者:马广明 * 完成日期:2014 年 4 月 9 日 * 问题介绍: 模板类--加 * 版 本 号:v1.0 */ #include <iostream> using namespace std; template<class T> class Complex { public: Complex(){x=1;y=1;} Complex(T r,T i){x=r;y=i;} Complex complex_add(Complex<T> &a); void display(); template<class T1> friend Complex<T1> add_complex(Complex<T1> &a,Complex<T1> &b); private: T x; T y; }; template<class T> void Complex<T>::display() { cout<<‘(‘<<x<<‘,‘<<y<<‘)‘<<endl; } template<class T> Complex<T> Complex<T>::complex_add(Complex<T> &a) { Complex<T> c; c.x=a.x-x; c.y=a.y-x; return c; } template<class T> Complex<T> add_complex(Complex<T> &a,Complex<T> &b) { Complex<T> c; c.x=a.x-b.x; c.y=a.y-b.y; return c; } 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; c7=add_complex(c1,c2); //调用友员函数支持加法运算,有两个形参 cout<<"c1+c2="; c7.display( ); Complex<double> c8; c8=add_complex(c4,c5); //调用友员函数支持加法运算,有两个形参 cout<<"c4+c5="; c8.display( ); return 0; }
原文:http://blog.csdn.net/u012369134/article/details/23733777