C++拾遗--函数模板
泛型的核心思想是数据与算法分离。函数模板是泛型编程的基础。
函数模板以 template<arg_list> 开头,arg_list是泛型参数的列表。
下面是一个加法函数模板,在实例化时,我们传入普通的数据类型。
#include <iostream>
using namespace std;
template<typename T1, typename T2>
auto add(T1 t1, T2 t2)->decltype(t1 + t2)
{
return t1 + t2;
}
int main()
{
cout << add(12.3, 12) << endl;
cout << add(12, 12.3) << endl;
cin.get();
return 0;
}运行
我们也可以传入函数类型。
#include <iostream>
using namespace std;
template<typename T, typename F>
void exec(const T &t, F f)
{
f(t);
}
int main()
{
exec("calc", system);
cin.get();
return 0;
}运行 system("calc"); 打开计算器
#include <iostream>
#include <cstdarg>
using namespace std;
//这个空参的函数用于递归终止
void show()
{
}
//参数个数可变,参数类型也多样
template<typename T, typename...Args> //typename...Args是可变类型列表
void show(T t, Args...args)
{
cout << t << ends;
show(args...);
}
int main()
{
show(1, 2, 3, 4);
show('a', 'b', 'c', 'd');
cin.get();
return 0;
}运行
所有内容的目录
原文:http://blog.csdn.net/zhangxiangdavaid/article/details/43865253