模板类中使用友元模板函数

来源:互联网 发布:中性美,知乎 编辑:程序博客网 时间:2024/05/17 23:51
#include<iostream>using namespace std;template<class T>class Complex{private:T a;T b;public:Complex<T>(T x=0,T y=0):a(x),b(y){}Complex<T> complex_add(Complex<T>  &);template<class Y>friend Complex<Y> Complex_add(Complex<Y> ,Complex<Y>);void Display();};template<class T>Complex<T> Complex<T>::complex_add(Complex<T>& x){Complex<T> c;c.a=a+x.a;c.b=b+x.b;return c;}template<class T>void Complex<T>::Display(){    cout<<"("<<a<<","<<b<<"i)"<<endl;}template<class T>Complex<T> Complex_add(Complex<T> x,Complex<T> y){Complex<T> c;c.a=x.a+y.a;c.b=x.b+y.b;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=Complex_add(c1,c2);  //需要在模板类中有一个友员函数支持加法运算,有两个形参cout<<"c1+c2=";c7.Display();return 0;}


0 0
原创粉丝点击