C++11程序设计要点总结-模板机制详解
C++程序设计要点总结
在编程的过程中呢我们总会遇到一些各种各样的问题,就比如在写方法的时候,我们一个同样的方法要写好几种类型的呢,这让我们很伤脑筋,但是呢C++有一个强大的功能就是模板机制,这个模板机制就可以让我们少写很多同样的代码,那么什么是模板呢,。我们举一个小例子吧!比如我们要去写交换函数,那么我们正常的写法是
void swap(int&a,int&b)
{
int temp=a;
a=b;
b=temp;
}
这样写大家都可以看懂,但是却有一个问题,我们现在写的只是交换int类型的值那么这样写很简单么,那么我们如果要交换一个double类型的值呢,我们在写一个double类型的swap函数么。
void swap(double&a,double&b)
{
double temp=a;
a=b;
b=temp;
}
这样写的话太麻烦了,如果我在想交换一个float类型的呢,char类型的呢,难道我要一个一个定义么,这个时候我们模板的作用就体现出来了。
既然要讲模板那么我们首先讲的是模板怎么定义模板的定义其实很简单,就像变量的定义方法一样,但是和变量不同的是他是在<中定义的>废话不多说我们来看看案例吧!
.template<typename name> //这是第一种的定义方法
.template<class name> //这是第二种的定义方法
那么上面这两种有什么区别呢,我给你们简单的概括一下,这里面的class是可以变成任何类型,就比如说我们自己定义的类结构体共同体等等等等,typename就是基本数据类型,那么什么是基本数据类型呢,就是我们的int,char,string既然讲到这里了,那么我们写一个案例吧!
template<typename type>
void swap(type&a,type&b)
{
type temp=a;
a=b;
b=temp;
}
既然讲完了定义那么定义后的这个方法怎么使用呢,其实使用起来也是很简单的,和正常函数一样传参就好了,他会自己去匹配
int a = , b = ;
swap(a,b);
cout << a << "\t"<<b << endl;
ps:使用必看
1.如果只有一个像上面的type那个swap一样的话那么你要注意一点,就是a和b的类型必须一样,不然他不知道识别什么。
2.使用模板的时候我们并不是一成不变的只能定义一个,其实我们可以像定义变量一样的定义它,使用逗号隔开即可。
C++11程序设计要点总结-模板机制详解的更多相关文章
- C++11 并发指南六(atomic 类型详解四 C 风格原子操作介绍)
前面三篇文章<C++11 并发指南六(atomic 类型详解一 atomic_flag 介绍)>.<C++11 并发指南六( <atomic> 类型详解二 std::at ...
- C++11 并发指南六( <atomic> 类型详解二 std::atomic )
C++11 并发指南六(atomic 类型详解一 atomic_flag 介绍) 一文介绍了 C++11 中最简单的原子类型 std::atomic_flag,但是 std::atomic_flag ...
- 【转】Eclipse Java注释模板设置详解
Eclipse Java注释模板设置详解 设置注释模板的入口: Window->Preference->Java->Code Style->Code Template 然后 ...
- 【转】Cookie/Session机制详解
Cookie/Session机制详解 会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息 ...
- 浏览器 HTTP 协议缓存机制详解--网络缓存决策机制流程图
1.缓存的分类 2.浏览器缓存机制详解 2.1 HTML Meta标签控制缓存 2.2 HTTP头信息控制缓存 2.2.1 浏览器请求流程 2.2.2 几个重要概念解释 3.用户行为与缓存 4.Ref ...
- java 深拷贝与浅拷贝机制详解
概要: 在Java中,拷贝分为深拷贝和浅拷贝两种.java在公共超类Object中实现了一种叫做clone的方法,这种方法clone出来的新对象为浅拷贝,而通过自己定义的clone方法为深拷贝. (一 ...
- 从mixin到new和prototype:Javascript原型机制详解
从mixin到new和prototype:Javascript原型机制详解 这是一篇markdown格式的文章,更好的阅读体验请访问我的github,移动端请访问我的博客 继承是为了实现方法的复用 ...
- 浏览器 HTTP 协议缓存机制详解
最近在准备优化日志请求时遇到了一些令人疑惑的问题,比如为什么响应头里出现了两个 cache control.为什么明明设置了 no cache 却还是发请求,为什么多次访问时有时请求里带了 etag, ...
- JVM的垃圾回收机制详解和调优
JVM的垃圾回收机制详解和调优 gc即垃圾收集机制是指jvm用于释放那些不再使用的对象所占用的内存.java语言并不要求jvm有gc,也没有规定gc如何工作.不过常用的jvm都有gc,而且大多数gc都 ...
随机推荐
- POJ3250【单调栈】
思路: 维护一个单调递增的栈,对于栈顶元素<=新值来说,那么后面的,我一定看不到了,pop掉以后,那么这时候的栈的大小就是我能看到的这个刚刚pop出去元素的个数. //#include < ...
- 一个关于国密SM4的故事
一个关于国密SM4的故事 我的名字叫SM4,我还有三位兄长,分别是大哥SM1, 二哥SM2, 和三哥SM3.说起我的名字,故事要回到2006年的时候,我出生的时候并不是叫SM4的,而是叫做SMS4.只 ...
- 极限和连续 limits + Continue
上一节我们将导数定义为切线的斜率,这是一种几何解释.我们求出了1/x的斜率为 -1/x2 求出了 f(x) = xn 的斜率是 f”(x) = n*xn-1 这些几何的推导都是根据y-y0 = k ...
- Selenium | 基础入门 | 利用Xpath寻找用户框
以微信公众号登陆界面为例, 找到相对应的Xpath的方法, 核心代码: System.setProperty(“webdriver.chrome.driver”,“ C:\\Program Files ...
- 线段树(单点更新)/树状数组 HDOJ 1166 敌兵布阵
题目传送门 /* 线段树基本功能:区间值的和,修改某个值 */ #include <cstdio> #include <cstring> #define lson l, m, ...
- 1-8继承extends
什么是继承? 继承是面向对象三大特征之一.java中的继承描述的是两个类之间的关系,被继承的类称为父类,继承的类称为子类,使用extends关键字来表示.在java语言里面只支持单继承,即一个类只能有 ...
- h5-22-地理位置
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- C#基础学习5
数组集合
- eggs
Description: Erin买了不少鸡蛋,她发现一天吃不完这么多,于是决定把n个同样的鸡蛋放在m个同样的篮子里,允许有的篮子空着不放,请问共有多少种不同的放法呢? 注意:2,1,1和1,2,1 ...
- 批量部署Hadoop集群环境(1)
批量部署Hadoop集群环境(1) 1. 项目简介: 前言:云火的一塌糊涂,加上自大二就跟随一位教授做大数据项目,所以很早就产生了兴趣,随着知识的积累,虚拟机已经不能满足了,这次在服务器上以生产环境来 ...