模板说明形式
template<class a,class b…>
template<typename a,typename b…>
目前都可用于函数模板和类模板,但以后可能会有新标准,最好class用于类,typename用于函数
函数模板
-
成员函数模板不能是虚函数,因为每个包含虚函数的类具有一个virtual table(vtable),包含该类的所有虚函数的地址,因此vtable的大小是确定的。成员函数模板只有被使用时才会被实例化,将其声明为虚函数会使vtable的大小不确定
-
模板说明在函数定义之前表示这是一个函数模板
-
析构函数不能是模板,因为没有参数 使用函数模板时,如果是自动类型推导,不会发生隐式类型转换,如果显式指定数据类型,可以发生。
-
对象也是一种数据类型,但是函数内的代码可能不适用于对象比如+,会报错
类模板
-
模板说明在类定义之前表示这是一个类模板
-
类模板不存在自动推导数据类型,只能用尖括号<>显式指定