C++ template

来源:互联网 发布:怪物猎人ol数据库 编辑:程序博客网 时间:2024/06/06 05:11

C++ 的template编程对于代码具有很高的重复利用率。

template的基本用法:template<class T>/template<typename T>(一般推荐用法)

下面介绍class和typename的区别:在模板参数列表中,这两种方式是相同的,但是在一些场合,typename有其特有的作用,即在嵌套类型说明是需要用typename说明后面的符号为类型而不是成员名称等;参考:

http://blog.163.com/susu_sf/blog/static/171060253201092233759957/

模板的作用就是用一个模板类型T来代替实际的类型,这样只要有相应的函数实例,通过实例的类型就可以将T变成实例。


模板参数和作用域:模板参数遵循普通的作用域规则,一个模板参数名的可用范围是其声明之后,至模板声明或定义结束之前,模板参数会隐藏外层作用域中声明的相同名字的模板名,在模板内不能重用模板参数名;


模板的声明也是必须要包含模板参数,即定义和声明不再一块的话,声明时要有模板参数,定义时也要有。


#include <iostream>using namespace std;template <typename T>               //声明需要模板参数int compare(const T &v1,const T &v2);template <typename T> T sum(T s1,T s2) {return s1+s2;}    //可以这样写,空一格再写函数int main(){int v1 = 10,v2 = 11;double d1 = 0.5, d2 = 1.7;int result,result1;double result2;result = compare(v1,v2);result1 = sum(v1,v2);result2 = sum(d1,d2);cout << result << endl;cout << result1 << endl;cout << result2 << endl;} template <typename T>               //定义时也要有模板参数int compare(const T &v1,const T &v2){      //作用范围有限if(v1<v2) return -1;if(v1>v2) return 1;if(v1==v2) return 0;}




0 0