C++ 模板机制与 string 类实战指南
泛型编程基础:函数与类模板
模板是 C++ 实现代码复用的核心手段。简单来说,它就像是一个模具,倒入不同的材料(类型),就能获得不同材质的铸件(实例)。
函数模板原理
如果我们要实现一个交换函数,直接写 swap(int a, int b) 只能处理整型。若需支持浮点或字符,通过重载虽然可行,但维护成本极高,且代码冗余。
函数模板解决了这个问题。template<typename T> 定义了一个模板,编译器会根据传入的实参类型自动推演生成特定版本的函数。
template <typename T>
void swap(T& a, T& b) {
T temp = a;
a = b;
b = temp;
}
实例化方式:
- 隐式实例化:调用时让编译器根据实参推导类型。
- 显示实例化:在函数名后显式指定
<T>。
匹配原则:
- 非模板函数与同名函数模板共存时,优先调用非模板函数。
- 若模板能产生更好匹配的函数,则选择模板。
- 模板函数不支持自动类型转换,普通函数可以。
类模板简介
类模板的定义格式类似,但实例化时需要在类名后跟 <T>,因为类模板本身不是真正的类,实例化后的结果才是。
template <class T1, class T2>
class MyClass {
// 成员定义
};
MyClass<int, double> obj; // 实例化

STL 框架概览
STL(Standard Template Library)是 C++ 标准库的重要组成部分,涵盖了数据结构、算法及容器。学习 STL 主要关注空间配置器、迭代器、容器、算法和适配器五大板块。
std::string 核心解析
std::string 本质上是 basic_string<char> 的 typedef,用于存储字符串。掌握其接口与底层逻辑至关重要。
构造与赋值
构造函数提供了多种初始化方式,包括默认构造、拷贝构造、从 C 风格字符串构造等。




