定义:为只有类型不同而逻辑功能相同的代码提供一个总定义。
其实模版就是把“类型”当作一种参数,在代码运行时传递
1,模版重载
template<typename T> void func(const T& arg){}
template<typename T> void func(const T& arg1,const T& arg2){} //模版之间的重载
void func(const int & arg1,const int & arg2){}
//非模版函数的重载
template<> void func(const char*const &a,const char*const&b){ } //模版的特例化
小结:模版的特例化只是前面加了“template<>”之后跟一般函数的写法完全相同,就是模版的一个具体类型。
2,一般我们习惯把函数的声明放在头文件中,定义放在源文件中,但是对于模版,最好把声明和定义都放在头文件中,否则要在头文件中包含定义模版的源文件(参考:C++ 教程网 模版1视频讲解)
模版的调用
int a,b;
func<>(a,b); //显式指定调用模版函数
func(a,b); //隐式调用非模版函数