第二节 · 容器类型的传递 · 转发模板
类模板让我们能够定义与类型无关的类,比如标准库中的 vector、map 都是类模板。
基本类模板
template<typename T>
class Stack
{
private:
vector<T> data;
public:
void push(const T& value)
{
data.push_back(value);
}
T pop()
{
T top = data.back();
data.pop_back();
return top;
}
bool empty() const
{
return data.empty();
}
};
int main()
{
Stack<int> intStack;
intStack.push(1);
intStack.push(2);
cout << intStack.pop() << endl; // 2
Stack<string> stringStack;
stringStack.push("hello");
stringStack.push("world");
cout << stringStack.pop() << endl; // world
return 0;
}多个模板参数
默认模板参数
成员函数模板
类模板特化
类型萃取
CRTP(奇异递归模板模式)
类模板的友元
模板别名
习题
实现一个通用的
LinkedList类模板。为特定类型特化一个类模板以提供优化实现。
解释 CRTP 的工作原理和应用场景。
Last updated