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