一.模板参数
- 类型模板参数: 出现在模板参数列表中,跟在typename/class后的参数。
- 非类型模板参数:用一个常量作为模板的一个参数。可以将该参数当做常量来使用。
二.举例
template <class T,size_t N>
class array1 {
public:
T& operator[](size_t index) {
if(index < _size)
return _array[index];
}
bool empty()const {
return 0 == _size;
}
size_t size()const {
return _size;
}
private:
T _array[N];
size_t _size;
};
int main() {
array1<int,10> a1;
return 0;
}
三.注意tip
- 1.浮点型/对象/字符串不允许作为非类型模板参数
- 2.必须在编译阶段明确确定。
- 3.表达式也可以 不可以为变量表达式。
array1<int,10+20> a1;//可以
int a = 10;
int b = 20;
array1<int,a+b> a2;//不可以