模板极大的方便了程序员对代码的重用,用类型参数化,实现对代码的重用。
一、函数模板
1.模板函数的一般形式
template <class 或 typename 关键字>
函数的定义 {}
例:
template <typename T>
T Max( T x, T y)
{
return (x>y)? x:y;
}
2.调用函数模板
①.、可以通过显示调用 m=Max<int,int >(x,y);
②、可以通过隐式调用,因为编译器可以通过函数参数来推断出类模板参数
m=Max(x,y);
3.函数模板可以与一般函数进行重载。
4.在函数模板中有非类型模板参数
template<typename type, int >
函数定义{};
使用非类型模板参数时,只能是整型,包含enum, 或者是指向外部链接的对象的指针。
也就是说 在函数编译期间你所使用的值要确定,且不会生成类。
错误一、派生类到基类的类型转换不会考虑
错误二、、单一数组的地址不可取。 Max<int *,&a[0]>(x,y); ×
二、模板类和类模板
1.定义的一般形式
templat