首页 > 代码库 > C++ 模板的用法
C++ 模板的用法
C++中的高阶手法就会用到泛型编程,主要有函数模板, 在程序中使用模板的好处就是在定义时不需要指定具体的参数类型,而在使用时确可以匹配其它任意类型, 定义格式如下
template <class T>T func(T ...) {}
让我们来看一个简单例子,写一个swap()将两个整数交换位置,
void swap(int &a, int &b){ int tmp; tmp = a; a = b; b = a; return 0; }
如果我们要将两个浮点型数交换,上面那个swap()肯定不适用,因此为我们还得写如下一个交换函数
void swap(float &a, float &b){ float tmp; tmp = a; a = b; b = a; return 0; }
很显然, 上面两段代码除了参数类型不一样,其它的处理方式完全一样,是不是感觉代码的复用性很差,如果我们要交换两个long类型的数呢,没办法,你不得再写一个上面那样的swap(). 还好C++足够智能,它早就为我们提供了一种更灵活的方法来解决上面这种问题,那就是模板。如果引入模板,上述代码可以由下面一断代替
template <class T>void swap(T &a, T &b) //T 可由任意类型代替,从而达到泛型效果{ T tmp; tmp = a; a = b; b = a; return 0; }
主函数
int main(){ int a=4, b =5; long l1=3333, l2 = 5455; float f1=234.53, f2 = 34.552; swap(a,b); // compiler auto generate a void swap(int &, int &) swap(l1,l2); swap(f1,f2); //一个函数可以处理三种类型的参数,这就是模板的魅力 return 0;}
注意, 模板可以同时定义多个参数,如
template <class T1, class T2, ....>T1 func(T2, ...){}
C++ 模板的用法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。