第七周实验报告3

  1. 1./* (程序头部注释开始) 
    2.* 程序的版权和版本声明部分 
    3.* Copyright (c) 2011, 烟台大学计算机学院学生 
    4.* All rights reserved. 
    5.* 文件名称: 模板类                          
    6.* 作    者: 114-4刘程程                            
    7.* 完成日期: 2012 年 4  月 3 日 
    8.* 版 本 号: vc.3    
    9.
    10.* 对任务及求解方法的描述部分 
    11.* 输入描述: 
    12.* 问题描述:该例实现了一个复数类,但是美中不足的是,复数类的实部和虚部都固定是double型的。
    13.* 可以通过模板类的技术手段,设计Complex,使实部和虚部的类型为定义对象时用的实际类型。
    14.* 程序输出:(1)要求类成员函数在类外定义。(2)在此基础上,再实现减法、乘法和除法
    15.* 程序头部的注释结束 
    16.*/  
    
    #include <iostream>
    using namespace std;
    template<class T> //类声明前加模板的声明
    class Complex
    {
    public:
     Complex(){real = 0;imag = 0;}
     Complex(T r,T i){real = r;imag = i;}//类声明中的每一个T,将被对象定义时提供的实际类型代替
        Complex complex_add(Complex &c2);
     void display();
    private:
        T real;//数据成员的类型,也将被对象定义时提供的实际类型代替
     T imag;
    };
    
    
    template<class T> //每一个成员函数的定义前,必须要声明类模板
    Complex<T> Complex<T>::complex_add(Complex<T> &c2)//使用了模板的类,将不再独立使用,其类名的完整表示为“类模板名<虚拟类型参数>”
    
    {
     Complex<T> c; //凡用到类名处也用“类模板名<虚拟类型参数>”形式
     c.real = real + c2.real;
     c.imag = 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_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();
     system("pause");
     return 0;
    }
    
    

    感悟:通过这个程序,我觉得最关键的就是要认真阅读类模板的相关知识,比如说:每一个成员函数定义前,必须要声明类模板。。还有类似的在程序中邪的注释
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值