C++ 模板与内存管理详解
模板
交换函数
实现通用的交换函数。
void Swap(int& left, int& right) {
int temp = left;
left = right;
right = temp;
}
void Swap(double& left, double& right) {
double temp = left;
left = right;
right = temp;
}
void Swap(char& left, char& right) {
char temp = left;
left = right;
right = temp;
}
缺点
- 重载的函数仅仅是类型不同,代码复用率比较低,只要有新类型出现时,就需要用户自己增加对应的函数。
- 代码的可维护性比较低,一个出错可能所有的重载均出错。
定义
模板是一个'代码蓝图',可以根据传入的类型'生成'对应版本的具体代码。
核心价值
解决'同逻辑、不同类型'的代码冗余问题。
分类
函数模板
定义
定义一个通用函数,参数类型通过模板参数指定,编译器会根据传入的实参类型自动生成对应版本的函数。
格式
template<typename T>
使用 template 和 typename 来声明模板,这里的 typename 也可以使用 class 来代替,不可以使用 struct。T 是参数类型,可以是内置类型或者自定义类型,可以作为函数的参数或者返回值。
多个类型
template<typename T1, typename T2>
代码示例
#include
std;
< T>
{
T tmp = x1;
x1 = x2;
x2 = tmp;
}
{
a = , b = ;
c = , d = ;
(a, b);
cout << a << << b << endl;
(c, d);
cout << c << << d << endl;
;
}


