【C++】非类型模板参数

前言

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;

注意:

  1. 浮点数、类对象以及字符串是不允许作为非类型模板参数的。
  2. 非类型的模板参数必须在编译期就能确认结果。
  3. const类型的变量能作为模板参数

你可能感兴趣的:(C++,c++)