C++ 模板编程
前言
很久没有总结面向对象的笔记了,每节课听了张老师的课都能感到受益匪浅,老师把C++面向对象的思想讲的十分透彻,而且很多编程细节都是企业化,项目化的思想。希望我的记录能学到老师一半的思想,也让人心满意足了!
模板(template)
template
是一个关键字,就是告诉你,下面的函数或者类都是编译的模板。
template 有两个参数类型分别是class
和tempname
,至于它们之间有什么区别,后文会提到,先举一个例子来简单引入模板
在编程的时候,我们经常会遇到交换两个数的情况,通常情况下我们会定义一个函数来完成这个交换
1 | void MySwap(int&a,int&b){ |
上面的函数只能交换两个int
型变量,那么如果遇到两个float型变量呢,是不是还要再写一个新的交换函数,只是参数类型是float*,如果再遇到double型呢。很显然,对于一个相同的操作,对于不同的类型,要使用多个函数,那我们能不能自定义一个函数,让C++自己识别我需要交换的数的类型,从而根据不同的类型自己选择应有的参数类型。于是,我们引入的模板
1 | template<typename T>//模板声明,只生效一次, typename 模板函数 |
和上面的函数相比,模板函数就是把参数类型声明为 typename T
,
甚至,我们还可以强行把两个不同类型的参数进行交换
1 | template<typename T1,typename T2> |
typename
参考
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 Ethereal
评论