类模板
将类中的某些类型变成泛型,从而定义一个模板。
类模板语法
声明
template<typename T>
class Stack {
public:
Stack();
bool empty();
T peek(T value);
T pop();
int getsize();
private:
T elements[100];
int size;
};
定义
必须要使用模板前缀template<typename T>
,而这个类必须用Stack<T>
来表示。
template<typename T>
Stack<T>::Stack()
{
}
template<typename T>
bool Stack<T>::empty()
{
return false;
}
...
类模板实例化
1.显式实例化
template class Stack<int>;
只要显式实例化类,编译器就会生成这样一个类。
2.隐式实例化
Stack<char> charStack;
先实例化一个CharStack类(名字由编译器按规则生成),在创建对象CharStack charStack
;
C++17之后隐式实例化
模板类型可根据初始化语句自动推导
如:
vector vectorName{1,2,3};
vectorName
实例化为vector<int>