学习 C++ 模板需要系统性地掌握从基础到高级的多个知识点。以下是分阶段的学习路线和核心内容,涵盖从入门到实战所需的全部知识体系:
一、模板基础概念
-
模板的初衷
- 泛型编程思想:编写与类型无关的代码
- 避免重复代码(如针对不同类型写多个相似的函数/类)
-
函数模板
template <typename T> T max(T a, T b) { return a > b ? a : b; }
- 模板参数推导规则
- 显式指定模板参数:
max<int>(3.5, 2)
-
类模板
template <typename T> class Stack { std::vector<T> elems; public: void push(T const&); T pop(); };
- 模板实例化:
Stack<std::string> stringStack;
- 模板实例化:
二、模板深入特性
-
非类型模板参数
template <typename T, int Size> class Array { T data[Size]; }; Array<double, 10> arr;
- 只能是整型、指针、枚举等编译期常量
-
模板特化与偏特化
- 全特化:
template <> class Stack<bool> { /* 特殊实现 */ };
- 偏特化:
template <
- 全特化: