前言
C++是支持泛型编程的可面向对象的编程语言
C++的泛型使用模版来实现,可以用一个抽象的模板参数来代替类型,而在模板实例化的时候进行类型推导
而模板参数不仅仅能够抽象一个类型,还支持让一个常量
作为模板参数,在类模板中可以将该参数当作一个常量进行使用
非类型模板参数
我们尝试着将一个size_t 类型的常量作为模板参数
template<class T, size_t N>
class array
{
}
实例化时:
array<100> arr1;
N还可以传递缺省值:
template<class T, size_t N = 10>
class array
实例化时<>内不传参数表示使用缺省值:
array<> arr2;
注意:
- 浮点数、类对象以及字符串是不允许作为非类型模板参数的。
- 非类型的模板参数必须在编译期就能确认结果。
- const类型的变量能作为模板参数