- 模板分类
- 函数模板
- 类模板
2.函数模板
- 格式
单变量template <class/typename T>
多变量template <class/typename T1,class/typename T2>
+函数声明 class person
{
.................
}
- 函数模板与普通函数的区别
1>.普通函数可隐式类型转换
2>.函数模板使用自动类型推导不会发生隐士类型转换,只用显式指定类型,可以发生隐士类型转换
- 何时调用
普通函数优先调用,当然如果模板函数能够更好地匹配,调用模板函数;也可以利用空模板来强制调用模板函数(person <>())
3.类模板
- 格式
template <class T>
class person
{
T m;
}
此位最简单的类模板
- 与函数模板区别
1>.没有自动类型推导
2>.可以有默认参数
- 类模板做函数参数
1>.显式的直接将类模板实例化
2>.参数模板化
3>.将整个类作为参数T
总结:类模板函数模板,并不是要去做模板,主要是此模板化的思想贯穿C++,是泛型编程得以实现的基础