友元模板---加

/*
* 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;
}

友元模板---加_第1张图片

你可能感兴趣的:(友元模板---加)