标签:
16 模板定义
16.1 定义函数模板
1 #include<iostream> 2 using namespace std; 3 template<typename T> 4 int compare(const T &v1,const T &v2) 5 { 6 if(v1<v2) 7 return -1; 8 if(v1>v2) 9 return 1; 10 return 0; 11 } 12 int main() 13 { 14 int a,b; 15 a=2; 16 b=3; 17 double a1,b1; 18 a1=1.2; 19 b1=2.3; 20 cout<<compare(a,b)<<endl; 21 cout<<compare(a1,b1)<<endl; 22 system("pause"); 23 }
(1)模板形参表
模板形参表很像函数形参表,
函数形参表定义了特定类型的局部变量,但并不初始化那些变量,在运行时再提供实参来初始化形参。
(2)使用函数模板
使用函数模板时,编译器会推断哪个模板实参绑定到模板行参上
一旦编译器确定了实际的模板实参,就称它为实例化了一个函数模板实例。
(3)inline 函数模板
template<typename T> inline Tmin(const T& a,const T& b);
定义类模板
1 template<typename T> 2 class Queue{ 3 public: 4 Queue(); 5 T& front(); 6 void push(const T&); 7 void pop(); 8 bool empty() constl 9 };
使用类模板
与调用函数模板形成对比,在使用类模板时,需要为模板形参指定实参
Queue<int> a1;
Queue<string> a2;
Queue<vector<string> >a3
模板形参
(1)模板形参作用域
模板形参的名字可以在声明为模板形参之后直到模板声明或定义的末尾使用
(2)使用模板形参名字的限制
用作模板形参的名字不能在模板内部重用
(3)模板声明
标签:
原文地址:http://www.cnblogs.com/yanliang12138/p/4728293.html