模板是创建泛型类或函数的蓝图或公式。库容器,比如迭代器和算法,都是泛型编程的例子,它们都使用了模板的概念。
函数模板: template <class type> retutype funcname(parameter){}
1 #include <iostream> 2 #include <string> 3 using namespace std; 4 //这里用到const&,表示参不能被修改,如果在函数前返回值类型不是常用的类型可以增加效率 5 template <class T> T sum(T const& parameter1, T const& parameter2) 6 { 7 return parameter1 + parameter2; 8 } 9 int main() 10 { 11 int a = 10; 12 int b = 20; 13 cout << "结果为:" << sum(a, b) << endl; 14 15 double d = 10.00; 16 double e = 20.11; 17 cout << "结果为:" << sum(d, e) << endl; 18 19 string s = "一花一世界,"; 20 string g = "一叶一菩提。"; 21 cout << "结果为:" << sum(s, g) << endl; 22 system("pause"); 23 return 0; 24 }
结果为:
结果为:30 结果为:30.11 结果为:一花一世界,一叶一菩提。
类模板: template <class type> class classname(){};
不管是类模板还是函数模板<>中的class其实还可以用typename代替,他们的作用完全一样,后面跟一个数据类型。对于函数模板我们还可以重载。