模板的参数类型有哪些?各自有哪些特点
时间: 2023-07-18 12:33:28 浏览: 118
模板的参数类型主要分为以下两类:
1. 类模板参数类型:
类模板参数类型是指在模板中使用类作为参数,其特点包括:
- 可以使用任意类作为参数;
- 参数类型必须在模板定义时指定,不能在模板实例化时指定;
- 类模板参数类型可以是一个类中的成员类型,也可以是一个嵌套类。
例如:
```
template <typename T>
class MyVec {
public:
void push_back(const T& val);
};
```
2. 非类型模板参数类型:
非类型模板参数类型是指在模板中使用非类类型的常量作为参数,其特点包括:
- 可以使用整型、指针、枚举等类型作为参数;
- 参数类型必须在模板定义时指定,不能在模板实例化时指定;
- 模板参数必须是常量表达式。
例如:
```
template <int N>
class MyArray {
public:
int data[N];
};
```
以上就是模板的参数类型及其特点。
相关问题
C++向量类模板常用的方法有哪些?
C++ 向量类模板常用的方法包括:push_back()、pop_back()、size()、empty()、clear()、insert()、erase()、reserve()、resize()、front()、back()、at() 等。
模板的类型参数与非类型参数,有什么区别?
模板的类型参数是指在模板定义时声明的一个或多个类型变量,用于指定模板中的具体类型。例如,下面的代码中,T就是一个类型参数:
```
template<typename T>
void print(T value) {
std::cout << value << std::endl;
}
```
非类型参数是指在模板定义时声明的一个或多个非类型变量,用于指定模板中的具体值。例如,下面的代码中,N就是一个非类型参数:
```
template<int N>
class Array {
public:
int data[N];
};
```
区别在于,类型参数是用于指定模板中的类型,而非类型参数是用于指定模板中的值。类型参数可以是任何类型,包括基本类型、类类型和指针类型等,而非类型参数只能是基本类型(如int、char、bool等)或枚举类型。此外,类型参数可以在函数模板和类模板中使用,而非类型参数只能在类模板中使用。