代码功能解析
该代码实现了一个通用的交换函数模板,能够交换任意相同类型的两个变量值。以下是具体分析:
模板函数定义
template<class T> void Swap(T& x, T& y) { T tmp = x; x = y; y = tmp; }- 使用
template<class T>定义模板,T为泛型类型参数。 - 函数参数为两个
T类型的引用(T&),允许直接修改原始变量。 - 通过临时变量
tmp完成交换操作,避免值覆盖问题。
主函数测试
int main() { int x1 = 1; int y1 = 2; Swap(x1, y1); cout << x1 << ' ' << y1 << endl; double x2 = 1.1; double y2 = 2.2; Swap(x2, y2); cout << x2 << ' ' << y2 << endl; return 0; }- 测试整数交换:
x1和y1初始值为1和2,调用Swap后输出2 1。 - 测试浮点数交换:
x2和y2初始值为1.1和2.2,调用Swap后输出2.2 1.1。
输出结果
2 1 2.2 1.1关键点说明
- 模板实例化:编译器根据调用时的参数类型自动生成
Swap<int>和Swap<double>的具体实现。 - 引用传递:函数参数使用引用,确保直接操作原始变量而非副本。
- 类型安全:模板在编译时检查类型一致性,若尝试交换不同类型变量会导致编译错误。