深入理解C++模版
C++模版的形式
函数模版
针对参数类型不同的函数
类模版
针对数据成员和成员函数不同的类
模板的形参
类型形参、非类型形参和模板形参
类型形参
类型形参由关见字class或typename后接说明符构成,可以定义多个类型形参。
模板形参(Template Template Parameters)
就是将一个模板作为另一个模板的参数。一个template parameter本身也是一个class template。
无类型模版参数
- 模板的非类型形参也就是内置类型的形参,例如下列程序中
int a
就是非类型的模板形参
1 | template<class T, int a> class B { |
- 非类型模板的形参只能是整型,指针和引用
- 调用非类型模板形参的实参必须是一个常量表达式
- 全局变量的地址或引用,全局对象的地址或引用const类型变量是常量表达式,可以用作非类型模板形参的实参