类模板实例化 · 一份蓝图,按类型生成多份具体类

template<class T> 是模式,编译器在用到时才按 T 生成代码(按需实例化)
蓝图 · 类模板 template<class T> class Stack { T data[N]; void push(T x); T pop(); }; T 是占位类型 —— 还不是真正的代码 你写下的使用 Stack<int> si; Stack<string> ss; 同一份 蓝图复用 int T = string T = 实例化 → 生成 实例化 → 生成 生成 · 具体的模板类 Stack<int> int data[N]; push(int x); int pop(); Stack<string> string data[N]; push(string x); string pop(); 一份模板 · 两种类型 · 编译器生成两个互不相同的类