C++中模板的基本概念

所谓的模板,就是将某段程序中的数据类型参数化,使得它能够处理某个范围内的数据类型,而不必为每种可能的类型都建立一个实例,从而避免了重复劳动,增强了程序的灵活性和有效性。

1 使用模板的必要性

C++ 中的模板提供了重用源代码的方法。例如,设计一个求两参数最大值的函数,不使用模板时,需要定义以下四个函数:

int max (int a,int b) { return( a>b ) ? a , b;
long max ( long a , long b ) { return ( a>b ) ? a , b; }
double max( double a , double b) { return ( a>b ) ? a ,b;}
char max( char a r char b ) { return( a>b ) ? a , b; }

如果使用模板,则只需要定义一个函数:

Template<class type> type max(type a ,type b)
{return( a>b ) ? a,b;}

模板对各种数据类型,执行完全相同的操作。根据函数调用中提供的参数,编译器自动实例化不同的对象代码函数。如程序218.cpp 所示。

//案例名称:使用模板的必要性
//程序名称: 218.cpp
#include<iostream>
#include <string.h>
using namespace std;
template<class T>
T max1(T a,T b)
{
return a>b ? a:b;
}
int main()
{

cout<< "max(20,30)="<< max1(20,25)<<endl;
cout<<"max('t','v')="<<max1('t','v')<<endl;
cout<<"max(10.1,15.2)="<<max1 (10.1,15.2)<< endl;
}

程序执行的结果如图 2-18 所示。

 图2-18执行结果

程序执行过程中,编译器自动生成以下三个重载函数:

int max(int a, int b) {return a>b ? a :b; }
float max(float a, float b) {return a>b ? a : b;}
char max(char a, char b) { return a>b ? a : b; }

2模板的分类

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

在说明了一个函数模板后,当编译系统发现有一个对应的函数调用时,将根据实参中的类型来确认是否匹配函数模板中对应的形参,然后生成一个重载函数。该重载函数的定义体与函数模板的函数定义体相同,称为模板函数 (template function)。同样,在说明了一个模板之后,可以创建类模板的实例,即生成模板类。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Yasen.M

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

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

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

打赏作者

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

抵扣说明:

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

余额充值