面向对象实验六模板

一、实验目的 

通过使用模板来实现类属编程,以此来简化编程。 模板是 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<iostream>

using namespace std;

template <typename T>

T comp_are(T a,T b)

{

if(a>b)

return b;

else

return a;

}

template <class R>

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 <class R>

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

{

arr=new R[len+1];

for(int i=0;i<len;i++)

arr[i]=ar[i];

}

template <class R>

R Array<R>::sum()

{

R summ=0;

for(int i=0;i<n;i++)

summ=summ+arr[i];

return summ;

}

template <class R>

R Array<R>::average()

{

R summ=0,ave=0;

n=strlen(arr);

for(int i=0;i<n;i++)

summ=summ+arr[i];

return ave=summ/n;

}

/*template <class R>

Array<R>::~Array()

{

delete [] arr;

printf("had delete!\n")

}*/

//user.cpp

#include"moban.h"

int main()

{

//测试模版函数

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

int a=1,b=2;

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

cout<<comp_are(a,b)<<endl;

double c=2.3,d=3.5;

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

cout<<comp_are(c,d)<<endl;

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

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

cout<<comp_are(e,f)<<endl;

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

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

cout<<comp_are(g,h)<<endl;

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

Array<int> st(shuzu_n,11);

cout<<"sum:    "<<st.sum()<<endl;

cout<<"average:"<<st.average()<<endl;

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

Array<double> qt(shuzu_m,4);

cout<<"sum:    "<<qt.sum()<<endl;

cout<<"average:"<<qt.average()<<endl;

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Polices张

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值