// 函数模版 /* template 函数返回值 函数名(T &n1, T &n2) { // 函数体 } */ #include #include #include using namespace std; namespace my { // 推荐使用 typename 而不是 class,因为 typename 更通用 template void swap(T &a, T &b) { a ^= b; b ^= a; a ^= b; } // 函数模版重载: 用于不同类型的参数 template void swap(T1 &a, T2 &b) { a ^= b; b ^= a; a ^= b; } } int main() { int a = 2, b = 6; cout << a << ", " << b << endl; my::swap(a, b); // 自动推演类型: swap(a, b) cout << a << ", " << b << endl; char c = 30; cout << a << ", " << (int)c << endl; my::swap(a, c); // 自动推演类型 cout << a << ", " << (int)c << endl; return 0; }