c++模板概念是什么?详细点

 我来答
670710211
推荐于2018-04-05 · 超过16用户采纳过TA的回答
知道答主
回答量:103
采纳率:0%
帮助的人:51.1万
展开全部
有以下这样3个求加法的函数: 
int Add(int x,int y)
{
return x+y;
}

double Add(double x,double y)
{
return x+y;
}

long Add(long x,long y)
{
return x+y;
}
它们拥有同一个函数名,相同的函数体,却因为参数类型和返回值类型不一样,所以是3个完全不同的函数。即使它们是二元加法的重载函数,但是不得不为每一函数编写一组函数体完全相同的代码。如果从这些函数中提炼出一个通用函数,而它又适用于多种不同类型的数据,这样会使代码的重用率大大提高。那么 C++的模板就可解决这样的问题。模板可以实现类型的参数化(把类型定义为参数),从而实现了真正的代码可重用性。C++中的模板可分为函数模板和类模板,而把函数模板的具体化称为模板函数,把类模板的具体化成为模板类。

参考资料: http://www.jsjren.com/c++xuexi/html/24.html

曦夕兮
2012-02-28 · TA获得超过1145个赞
知道小有建树答主
回答量:199
采纳率:0%
帮助的人:97.6万
展开全部
我打个比方吧,假如说你学了C语言很久,对链表很熟练,然后别人想让你写一个简单的学生管理系统,但是虽然烂熟于心,但是写那么多插入链表,删除链表,查询链表函数依然很麻烦,而且都是一样的代码,写很多遍就烦了。
那么能不能做一个模板类,把所有的通用代码集成起来,我们只需要调用模板函数就可以不用写一些基础代码了。
就这样,模板类诞生了,模板类集成了很对前人优秀的代码,举了例子,list模板
这是链表模板,我们以后写插入链表,删除链表,查询链表函数,再也不用也麻烦的代码从遍历链表开始,直接list。insert(),list。srarch(),list。delete()就可以实现功能了,所以,模板就是为了方便而产生的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tangrong2
2012-02-28 · TA获得超过768个赞
知道小有建树答主
回答量:540
采纳率:100%
帮助的人:281万
展开全部
模板这东西,相当于容器,就vector模板来说吧,我们可以将它想象为排成一列的桶,桶里面的装的东西就是你需要放的元素,也许是int类型、double类型,自定义的结构、联合、类等元素,也可能还是另外的模板(就是说桶里面又有一个小的桶)。
至于模板函数,就容易了,不指定任何类型,因为无法确定需要的类型,所以就相当于空在那里,等用户自己来确定,到底该放什么东西在上面。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
俯经碑5750
2012-11-06
知道答主
回答量:3
采纳率:0%
帮助的人:4661
展开全部
模板可以认为是类的类,我们知道一个类可以实例化为一个对象,那么类其实可以认为是一个模板类的一份实例,我们可以让一个模板类产生多份类实例,只需要简单的指定不同的模板参数,这样可以进一步提高代码的抽象性,不知道你了解lua或者As3这类脚本编程语言么,他们都提供函数类型,AS3提供类类型,这些语言认为一份函数代码其实就是某个函数对象,一份类代码就是某个模板类的一份实例;不知你理解了木有
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式