第七周-项目5-模板类中使用友元函数

来源:互联网 发布:linux删除mysql数据库 编辑:程序博客网 时间:2024/06/03 04:10
/** 程序的版权和版本声明部分:* Copyright (c) 2013.烟台大学计算机学院* All rights reserved.* 文件名称: 模板类中使用友元函数* 作    者:冯冬影* 完成日期:2014 年 4月 11日* 版 本 号:v1.0* 对任务及求解方法的描述部分:* 输入描述:* 问题描述:* 程序输出:*/#include<iostream>using namespace std;template<class T>//声明类模板Tclass Complex{public:    Complex()    {        real=0;        imag=0;    }    Complex(T a,T b)    {        real=a;        imag=b;    }    template <class T1> friend Complex <T1> add_complex(Complex <T1>&,Complex <T1>&);//友元函数>    Complex complex_add(Complex &);    void display();private:    T real;    T imag;};template <class T1>Complex <T1> add_complex(Complex <T1> &c1,Complex <T1> &c2){    Complex <T1> c;    c.real=c2.real+c1.real;    c.imag=c2.imag+c1.imag;    return c;}template <class T>Complex <T> Complex<T>::complex_add(Complex <T> &c1){    Complex <T> c;    c.real=real+c1.real;    c.imag=imag+c1.imag;    return c;}template<class T>void Complex<T>::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;    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;}


运行结果

友元函数的声明中也要给出模板声明!!!

0 0
原创粉丝点击