15第六周项目六——复数函数模板(2)

来源:互联网 发布:心事谁人知 编辑:程序博客网 时间:2024/05/17 23:45

/*
 * Copyright (c) 2014, 烟台大学计算机学院
 * All rights reserved.
 * 文件名称:test.cpp
 * 作    者:李晓凯
 * 完成日期:2015年 4 月 15 日
 * 版 本 号:v1.0
 *
 * 问题描述:(1)要求类成员函数在类外定义和友元函数完成复数的加法
 * 输入描述:
 * 程序输出:输出两个复数的加运算值

 */

#include <iostream>using namespace std;template<class T>class Complex{public:    Complex(T r=0,T i=0):real(r),imag(i){};    Complex complex_adds(Complex &c1);    template <class T1> friend Complex <T1> add_complex(const Complex <T1> &c1,const Complex <T1> &c2);    void display();private:    T real;    T imag;};template<class T>Complex<T> Complex<T>::complex_adds(Complex<T> &c2){    Complex<T> c;    c.real=real+c2.real;    c.imag=imag+c2.imag;    return c;}template <class T1>Complex <T1> add_complex(const Complex <T1> &c1,const Complex <T1> &c2){    Complex <T1> c;    c.real=c1.real+c2.real;    c.imag=c1.imag+c2.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_adds(c2);  //调用成员函数支持加法运算,有一个形参    cout<<"c1+c2=";    c3.display( );    Complex<double> c4(3.1,4.4),c5(5.34,-10.21),c6;    c6=c4.complex_adds(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;}


 

 

学习总结:刚开始不是很懂,在声明和定义友元函数的时候用了同一个“T”,结果运行错误,后来询问了贺老师后就懂了,多谢贺老师教导 (*^__^*) 嘻嘻……

0 0
原创粉丝点击