• 面向对象实验六模板


    一、实验目的 

    通过使用模板来实现类属编程,以此来简化编程。 模板是 C++语言中相对较新的一个重要特性。模板使程序员能够快速建立具有类型安全的类库集合和函数集合,它的实现,方便了更大规模的软件开发。模板可以让程序对任何其它数据类型进行同样方式的处理。

    C++程序由类和函数组成,模板也可以分为类模板(class template)和函数模板

    (function template)。

    函数模板的一般定义形式为:

    Template <类型形式参数表> 返回类型  函数名(形式参数表)

    {

        //函数定义体

    }

    类模板的一般定义形式是:

    Template <类型形式参数表>class 类名

    {

        //类声明体

    };

    类中成员函数一般的定义形式是:

    Template <类型形式参数表>  

    返回类型  类名<类型名表>::成员函数名(形式参数表)

    {

        //成员函数定义体

    }

    二、实验内容 

      使用 Visual C++ 6.0 分别建立模板函数和模板类,并将其实例化。

    三、实验要求 

       1 、编写一个函数模板,它返回两个值中的最小者,要求能正确处理两个数(整数、双精度数、单个字符),两个字符串等;

       2、编写一个类模板,该类实现对一个数组(整型、双精度型等)求和并求平均值。

    四、实验课后要求 

    1、整理课内上机的结果、体会;

    2、完成实验报告。

    实验代码:

    //moban.h

    #ifndef MOBAN_H_

    #define MOBAN_H_

    #include

    using namespace std;

    template

    T comp_are(T a,T b)

    {

    if(a>b)

    return b;

    else

    return a;

    }

    template

    class Array

    {

    private:

    R *arr;

    int len;

    public:

    Array(R *ar,int len);

    R sum();

    R average();

    // ~Array(){delete [] arr;}

    };

    #endif

    //moban.cpp

    #include"moban.h"

    template

    Array::Array(R *ar,int len)

    {

    arr=new R[len+1];

    for(int i=0;i

    arr[i]=ar[i];

    }

    template

    R Array::sum()

    {

    R summ=0;

    for(int i=0;i

    summ=summ+arr[i];

    return summ;

    }

    template

    R Array::average()

    {

    R summ=0,ave=0;

    n=strlen(arr);

    for(int i=0;i

    summ=summ+arr[i];

    return ave=summ/n;

    }

    /*template

    Array::~Array()

    {

    delete [] arr;

    printf("had delete!\n")

    }*/

    //user.cpp

    #include"moban.h"

    int main()

    {

    //测试模版函数

    cout<<"测试模版函数:"<

    int a=1,b=2;

    cout<<"int a=1,b=2"<

    cout<

    double c=2.3,d=3.5;

    cout<<"double c=2.3,d=3.5"<

    cout<

    char e='a',f='g';

    cout<<"char e='a',f='g'"<

    cout<

    char g[]="student",h[]="teacher";

    cout<<"char g[]=student,h[]=teacher"<

    cout<

    int shuzu_n[]={0,1,2,3,4,5,6,7,8,9};

    Array st(shuzu_n,11);

    cout<<"sum:    "<

    cout<<"average:"<

    double shuzu_m[]={3.2,3.6,3.9};

    Array qt(shuzu_m,4);

    cout<<"sum:    "<

    cout<<"average:"<

    return 0;

    }

  • 相关阅读:
    vue中使用富文本编辑器,@tinymce/tinymce-vue
    golang——接口
    小程序-走迷宫
    【Apollo学习笔记】——规划模块TASK之RULE_BASED_STOP_DECIDER
    【ansible第二次作业】
    choices参数的使用、MVC和MTV的模式、创建表对表关系的三种创建方式
    AOP是什么?如何使用AOP?
    opencv:从0到实现人脸识别
    编程语言学习杂谈
    算法通关村第十一关青铜挑战——移位运算详解
  • 原文地址:https://blog.csdn.net/night__wind/article/details/127914334