类模板实例化 · 一份蓝图,按类型生成多份具体类
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();
一份模板 · 两种类型 · 编译器生成两个
互不相同
的类
▶ 重播