函数模板
template<typename T> //模板参数列表
在函数调用点,编译器用用户指定的类型,从原模版实例化一份函数代码出来
不进行编译,因为不知道类型
模板的实例化
==》》发生在调用的时候
模板函数
==》》需要被编译器所编译的
模板类参数
==》》typename/class
模板非类型化参数
==》》非类型参数都是常量(整数、地址、引用),只能使用,不能修改
模板实参推演
==》》可以根据用户传进来的类型,来推导出模板类型的具体类型。但是推导只能同时推导一个类型
如果模板函数与普通函数发生重载,系统会首先调用普通函数
max(T a,T b)//也就是说,a与b只能是一个类型。
max(T a,p b)//这样定义2个模板,可以使a,b是不同模板。
模板的特例化
==》》 提供特殊的实例化(用户提供)
模板函数、模板的特例化、非模板函数的重载关系
2.222222 类模板
除来构造函数与析构函数不用添加,其他都需要添加