泛型编程 / Generic programming (ジェネリックプログラミング)
参考资料:
template <typename/class type> ret-type func-name(parameter list) { // 函数的主体 // 原本的函数头部分:ret-type func-name(parameter list) }
// 实例演示 // 定义一个模板函数 template <typename T> inline T const& Max (T const& a, T const& b) { return a < b ? b:a; } // 隐式模板实参调用 auto a = Max(i, j); // 显式 auto b = Max<int>(i,j);
为什么要有显示实例化?事实上,编译器只在要调用函数的时候才使用到函数,如果不使用显示实例化,每次调用函数时,模板都会消耗性能去推导使用的是哪个类型的函数,增加了程序运行时的负担;使用了显示实例化,则在编译时就已经处理了函数选择。
模板类,基类也可以作为模板类型,也可以有“默认参数”(默认的模板类型)
template <class T_LLIOHOOK_FILELOC, class T_PACKAGE = CAkDiskPackage> class CAkFilePackageLowLevelIO : public T_LLIOHOOK_FILELOC