初话C++模板【用自己的话,解释清楚这些】
用自己的话解释清楚C++的模板编程
模板编程是为了解决什么问题而出现的?
提高代码的重用性,提高代码的利用率。
泛型编程的一种实现。
模板的精神是:
类型参数化。
模板的实现
模板分为:函数模板、类模板
函数模板
定义函数模板的一般形式为:
template < typename T>
通用函数定义 通用函数定义
或
template <class T>
通用函数定义 通用函数定义
对于多个类型可采用如下:template <class T1, typename T2>
参考使用代码如下:
1 #include <iostream>
2
3 using namespace std;
4 template <typename T> //模板声明,其中T为类型参数
5 inline T max(T a,T b,T c) //定义一个通用函数,用T作虚拟的类型名
6 {
7 if(b>a) a=b;
8 if(c>a) a=c;
9 return a;
10 }
11
12
13 int main()
14 {
15 int i1=18,i2=19,i3=20;
16 int i;
17
18 double d1=1.23,d2=2.34,d3=3.56;
19 double d;
20
21
22 i=max(i1,i2,i3);
23 d=max(d1,d2,d3);
24 cout<<"i_max="<<i<<endl;
25 cout<<"d_max="<<d<<endl;
26 return 0;
27 }
28
类模板
类模板的定义也与函数模板类似:
参考代码如下:
1 #include <iostream>
2
3 using namespace std;
4 template <typename T>
5
6 class Compare
7 {
8 public:
9 Compare(T a,T b)
10 {
11 x=a;
12 y=b;
13 }
14 T max()
15 {
16 return (x>y)?x:y;
17 }
18
19 private:
20 T x,y;
21 };
22
23
24
25 int main()
26 {
27 Compare<int> c(3,7);
28
29
30 cout<<c.max()<<" is the max of two num"<<endl;
31 return 0;
32 }
33
参考工程下载,http://pan.baidu.com/s/1mgKBUoK
http://pan.baidu.com/s/1pJO96Q3
http://pan.baidu.com/s/1kT0vioJ
QQ群 计算机科学与艺术 272583193
加群链接:http://jq.qq.com/?_wv=1027&k=Q9OxMv
初话C++模板【用自己的话,解释清楚这些】的更多相关文章
- C++ Templates (1.1 初窥函数模板 A First Look at Function Templates)
返回完整目录 目录 1.1 初窥函数模板 A First Look at Function Templates 1.1.1 定义模板 Defining the Template 1.1.2 使用模板 ...
- 51nod 1009 - 数字1的数量 - [数位DP][模板的应用以及解释]
题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1009 基准时间限制:1 秒 空间限制:131072 KB 给 ...
- c++学习之初话 函数指针和函数对象 的因缘
函数指针可以方便我们调用函数,但采用函数对象,更能体现c++面向对象的程序特性. 函数对象的本质:()运算符的重载.我们通过一段代码来感受函数指针和函数对象的使用: int AddFunc(int a ...
- C++入门之初话多态与虚函数
多态性是面向对象程序设计的又一个重要思想,关于多态的详尽描述,请看本人的收藏https://www.cnblogs.com/hust-ghtao/p/3512461.html.这篇博文中,详尽的探讨了 ...
- c++入门之初话指针
先上代码:再进行总结知识: # include "iostream" struct ant_year_end { int year; }; int main() { using n ...
- c++入门之初话结构体
结构体是一种具有一定数据结构思想的数据类型,我们在对待结构体的时候,用该从数据结构的思想去审视结构体.下面给出结构体的定义 struct mystruct {]; int score; double ...
- JavaScript模板引擎实现数据交互
经过1年的磨练,近期终于稍微明白到,前端是怎么做到企业要求的:数据交互. 1,ajax+json这个是必须学的,但没问题,我们可以通过这个博客来慢慢了解怎么回事? 2,可以通过JS框架和JS模板来实现 ...
- 微信小程序模板发送,openid获取,以及api.weixin.qq.com不在合法域名内解决方法
主要内容在标题三,老手可直接跳到标题三. 本文主要解决个人开发者模板消息发送的问题(没有服务器,不能操作服务器的情况) 针对api.weinxin.qq.com不在以下合法域名列表内的问题提出的解决方 ...
- Django笔记 —— 模板
最近在学习Django,打算玩玩网页后台方面的东西,因为一直很好奇但却没怎么接触过.Django对我来说是一个全新的内容,思路想来也是全新的,或许并不能写得很明白,所以大家就凑合着看吧- 本篇笔记(其 ...
随机推荐
- oracle备份恢复之rman恢复到异机
注意事项: 1 此处实验环境为同平台,同字节序,同版本,源机器和目标机器相同的目录结构. 2 目标机器只需要安装oracle数据库软件即可. 3 第一次利用备份恢复测试环境,之后从源机器拷贝备份到目标 ...
- hadoop 关闭进程时报错no 进程 to stop
前两天和朋友李天王吃饭的时候,聊到了一个hadoop的运维的很简单问题,感觉很有意思,以前也没有注意过,现在加以重现和整理. 感谢李天王的分享.... 翻看了yarn-deamon.sh st ...
- VIM复制粘贴大全!
原文地址:http://lsong17.spaces.live.com/blog/cns!556C21919D77FB59!603.entry 内容: 用vim这么久 了,始终也不知道怎么在vim中使 ...
- cocos2d-x 1970毫秒数转时间
转自:http://www.cocos2dev.com/?p=322 做网络游戏时,服务器的时间在本地显示的时候要转成本地时间,可以利用系统函数转化. ";//假如这是服务器的时间 ] = ...
- 【经验记录】Android上传文件到服务器
Android中实现上传文件,其实是很简单的,和在java里面是一样的,基本上都是熟悉操作输出流和输入流!还有一个特别重要的就是需要配置content-type的一些参数!如果这些都弄好了,上传就很简 ...
- [AngularJS] Javascript scope and AngularJS $scope
Scope resolution of our Angular documents works exactly the same way scope resolution works in plain ...
- AS3 Signals
在项目中,使用as3内置事件框架必须通过自定义事件才可以实现值的传递,大量自定义事件.定义常量和整个事件派发的管理.添加侦听器.移除侦听器,或多或少都会带来大量的代码,而signals这个框架思想原来 ...
- centosx64位寄存器
[root@monitor ~]# uname -aLinux monitor 2.6.32-431.23.3.el6.x86_64 #1 SMP Thu Jul 31 17:20:51 UTC 20 ...
- HelloSpark.scala
/** * Created by root on 9/6/15. */ import org.apache.spark.SparkContext import org.apache.spark.Spa ...
- Ruby on Rails Tutorial 第三章 静态页面
1.生成静态页面 $ rails generate controller StaticPages home help #生成主页和帮助页面的路由.控制器及静态页面 $ rails destroy ...