2025-02-27 22:25:34 +08:00

736 B

模板

函数模板

基本格式

template <typename T>
void swap(T &a, T &b) {
	T temp;
	temp = b;
	b = a;
	a = temp;
}

函数模板必须放在头文件里,因为它不是函数实体,只能算编译指令

模板的几个术语

  • 隐式实例化
int a=0, b=3;
swap<int>(a, b);
  • 显式实例化
template void swap<int>(int&, int&);	// 使用模板生成int类型的函数定义
  • 显式具体化
template <> void swap<int>(int&, int&);

这个可以放到其他文件里,因为是有实体的

类型推导

  • decltype()
int a;
decltype(a) var;

类模板

  • 同样没有实体,包括类成员方法等都要写成模板的格式