Zhonghui

每个不曾起舞的日子,都是对生命的辜负

User Tools

Site Tools


程序:cpp:模板

C++模板

泛型编程 / Generic programming (ジェネリックプログラミング)

参考资料:

  1. C++模板之函数模板实例化和具体化 https://www.cnblogs.com/cthon/p/9203234.html

模板函数

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
/var/www/DokuWikiStick/dokuwiki/data/pages/程序/cpp/模板.txt · Last modified: 2024/09/17 17:12 by zhonghui