c++可变类型模板
学习可变类型模板
#include <iostream>
#include <typeinfo> //typeid需要
#include <cstdarg> //可变参数
using namespace std;
template<class T>
// n代表多少个参数 t代表多个类型
T add(int n, T t...)
{
cout << typeid(T).name() << endl; //打印数据的类型
va_list arg_ptr; //开始指针
va_start(arg_ptr, n); //从arg_ptr开始,读取n个数
T sum(0);
for (int i = 0; i < n; i++)
{
//va_arg宏传入开始指针(获取开始读取的位置),及数据类型(根据数据类型占字节计算),返回值
sum += va_arg(arg_ptr, T);
}
va_end(arg_ptr); //结束
return sum;
}
int main(int argc, char *argv[])
{
cout << add(3, 1, 2, 3) << endl;
cout << add(2, 1.1, 2.2) << endl;
cin.get();
return 0;
}
秋风
2017-06-23