什么是C++模板?_百度知道

以下内容引自上面网址

模板是一种工具。使用它会给程序员编写大规模的软件带来方便。因为使用模板可以使程序员建立具有通用类型的函数库和类库。模板也是C++语言支持参数化多态性的工具。将一段程序所处理的对象类型参数化,就可以使这段程序能够处理某个类型范围内的各种类型的对象,这就是参数化多态性。被参数化的一段程序将会处理一定范围内的若干种不同类型的对象,即对于一定范围内的若干不同类型的对象的某种操作将对应着一个相同结构的实现。而模板这种工具就是用来解决这个问题的。由于C++语言的程序结构主要是由函数和类构成的,因此,模板也具有两种不同的形式:函数模板和类模板。
4、函数模板与模板函数
函数模板是对一组函数的描述,它不是一个实实在在的函数,编译系统并不产生任何执行代码。
当编译系统在程序中发现有与函数模板中相匹配的函数调用时,便生成一个重载函数,该重载函的函数体与函数模板的函数体相同。该重载函数称为模板函数。
函数模板与模板函数的区别如下:
(1) 函数模板不是一个函数,而是一组函数的模板,在定义中使用了参数类型。
(2) 模板函数是一种实实在在的函数定义,它的函数体与某个模板函数的函数体相同。
编译系统遇到模板函数调用时,将生成可执行代码。函数模板是定义重载函数的一种工具。一个函数模板只为一种原型函数生成一个模板函数,不同原型的模板函数是重载的。这样就使得一个函数只需编码一次就能用于某个范围的不同类型的对象上。因此,可以说函数模板是提供一组重载函数的样板。

在c++中有如下语句
int a;
char b;
long c;
float d;
像上面的 int, char, long, float 被称为“类型”。
有时需要将“类型”也做为参数来处理,比如,要写一个比较大小的函数 comp(x,y)
如果是两个int型比较就返回一个int类型的值,如果是两个float型比较就返加一个float型结果,当然可以用函数重载来实现,但利用函数模板就只要写一个函数
template<class T>
T comp(T x,T y)
{
return x>y?x:y;
}
其中template<class T>就是声明将T作为一个类型参数
和以下重载的函数比较一下
int comp(int x,int y)
{
return x>y?x:y;
}
float comp(float x,float y)
{
return x>y?x:y;
}
简单的说, 模板 就是一个函数或类模板可以解决不同类型的问题

什么是C++模板?_百度知道相关推荐

  1. 毕业论文评审意见、导师意见范文、模板_Smile~风_百度空间

    毕业论文评审意见.导师意见范文.模板_Smile~风_百度空间 又到一年论文答辩时,很多同学需要自己写评审意见.导师意见,下面列出了我通过百度收集的一些模板和范围,方便大家参考. 题目1:固本活血法对 ...

  2. 百度小程序模板制作_百度小程序模板平台

    分享一个百度小程序模板平台,这个平台可以提供超60+行业的百度小程序模板. ☞百度小程序模板平台 下面给大家分享一下在这个百度小程序模板平台,怎么制作自己的百度小程序. 百度小程序制作很容易,只需找一 ...

  3. Socket 短连接、长连接_YTmarkit的空间_百度空间

    Socket 短连接.长连接_YTmarkit的空间_百度空间 Socket 短连接.长连接_YTmarkit的空间_百度空间 Socket 短连接.长连接 socket Socket协议的形象描述 ...

  4. jquery中如何以逗号分割字符串_百度知道

    jquery中如何以逗号分割字符串_百度知道javascript本身就是带split方法的 定义和用法 split() 方法用于把一个字符串分割成字符串数组. 语法 stringObject.spli ...

  5. 北京哪儿有卖tods豆豆鞋的?在线等答案、、、、(类似动物园、西单等地)_百度知道...

    北京哪儿有卖tods豆豆鞋的?在线等答案....(类似动物园.西单等地)_百度知道 北京哪儿有卖tods豆豆鞋的?在线等答案....(类似动物园.西单等地)

  6. 为什么放弃治疗_百度百科

    为什么放弃治疗_百度百科 为什么放弃治疗

  7. 红双喜五星直板乒乓球拍多少钱?_百度知道

    红双喜五星直板乒乓球拍多少钱?_百度知道 同问 红双喜五星直板乒乓球拍多少钱? 2012-7-9 21:06 提问者:匿名 | 浏览次数:68次 自己像买个好点的乒乓球拍,红双喜五星直板的,买板和胶皮 ...

  8. 弗拉明戈舞_百度百科

    弗拉明戈舞_百度百科 弗拉明戈舞     编辑     弗拉明戈舞简介"弗拉明戈"不仅是歌(cante).舞(baile)和吉他音乐(toque)的三合一艺术,也代表着一种慷慨.狂 ...

  9. 如何控制Yahoo! Slurp蜘蛛的抓取频度_国外博客资源站_百度空间

    如何控制Yahoo! Slurp蜘蛛的抓取频度_国外博客资源站_百度空间 如何控制Yahoo! Slurp蜘蛛的抓取频度 2009年08月13日 星期四 5:56 上周末豆瓣的阿北给我电话:最近你们雅 ...

最新文章

  1. JavaScript跨域总结与解决办法
  2. Sharepoint ListTemplateId
  3. FactoryMethod工厂方法模式升级成AbstractFactory抽象工厂模式
  4. 动态绑定 dgvlist 列
  5. Boost.PropertyTree 属性树的简介
  6. 挑战程序设计竞赛_实力爆棚!2019年,华中科技大学拿下亚洲区竞赛金牌4枚!...
  7. concurrent(七)ConcurrentHashMap源码分析
  8. Dijkstra-解决最短路径问题
  9. python中list函数中variables变量_如何在Python中使用变量,浅谈,Pytorch,的,Variable,方法...
  10. 大数据?人工智能?揭秘银行数据仓库发展趋势
  11. ElasticSearch中doc values和fielddata
  12. 使用“npm init”初始化项目
  13. Linux随笔15-Ubuntu20.04允许root用户图形界面登录、chrony局域网时间同步服务、ipxe实现系统自动化安装
  14. 花费巨资参加SAP培训真的有用吗?
  15. 0.96寸OLED12864显示屏设计方案(原理图+PCB+BOM表+程序)
  16. Juniper JNCIS-ER jn0-350 148Q
  17. C语言醉酒,驾驶人在道路上饮酒醉酒驾驶机动车处3年以上有期徒刑
  18. 微软输入法半角全角切换
  19. Eclips显示行号
  20. 如何在eclipse制作的APP中添加背景图

热门文章

  1. 用Python防止头上一片青青草原
  2. python解除windows锁屏_实战 | Python批量提取Win10锁屏壁纸
  3. android viewpager 嵌套fragment,Android ViewPager+Fragment多层嵌套(使用问题处理)
  4. java音频库_Java是否为音频_synthesis_内置了库?
  5. mysql多表联查分页_sqlserver多表联合查询和多表分页查询的代码讲解
  6. mysql引号问题_MySQL中引号的问题
  7. ubuntu12.04 mysql 安装_Ubuntu 12.04 安装 配置 访问MySQL
  8. 基于注意力机制的lstm实现_一种基于注意力机制的自动标点引擎的测试体验
  9. 竞态条件的赋值_《Java并发编程实战》读书笔记一:基础知识
  10. 项目管理ppt_「PPT」几近满分的项目管理PPT干货