50 lines
916 B
C++
50 lines
916 B
C++
// 函数模版
|
||
|
||
/*
|
||
template <class T>
|
||
函数返回值 函数名(T &n1, T &n2)
|
||
{
|
||
// 函数体
|
||
}
|
||
*/
|
||
#include <iostream>
|
||
#include <cstring>
|
||
#include <cstdlib>
|
||
|
||
using namespace std;
|
||
namespace my
|
||
{
|
||
// 推荐使用 typename 而不是 class,因为 typename 更通用
|
||
template <typename T>
|
||
void swap(T &a, T &b)
|
||
{
|
||
a ^= b;
|
||
b ^= a;
|
||
a ^= b;
|
||
}
|
||
|
||
// 函数模版重载: 用于不同类型的参数
|
||
template <typename T1, typename T2>
|
||
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<int>(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;
|
||
}
|