目录

1、模板实现方式

模板实现方式有两种:

#include <vector>
template <typename T>
class Stack
{
public:
   void Push(T val);
   T Pop();
   bool IsEmpty() const;
private:
  std::vector<T> mStack;
};

// 使用
typedef Stack<int> IntStack;
IntStack* stack = new IntStack();

C预处理器模拟模板

利用C预处理器定义文本

缺点:

2、预处理器没有类型检查和作用域概念,只是简单的文本复制

除非不发使用模板,否则应该避免使用预处理器来模拟模板

特化

例如泛型的栈模板定义为Stack<T>,你可以为Stack<int>提供定制函数实现。

template<>
void Stack<int>::Push(int val) {
// 实现特定于整型数的压栈功能
}

基于模板API的缺点

2、当其他文件包含了类模板定义所在的头文件时,内联的代码都需要重新编译,增加编译时间,使得代码膨胀