怎么在C++项目中实现一个可变参数函数
这期内容当中小编将会给大家带来有关怎么在C++项目中实现一个可变参数函数,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
创新互联建站专注于旌德网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供旌德营销型网站建设,旌德网站制作、旌德网页设计、旌德网站官网定制、小程序设计服务,打造旌德网络公司原创品牌,更为您提供旌德网站排名全网营销落地服务。
一、变长参数函数
头文件:#include
函数声明
int add(int count, ...);
函数定义
int add(int count, ...) { va_list va; va_start(va, count); int sum = 0; for (int i = 0; i < count; i++) sum += va_arg(va, int); va_end(va); return sum; }
函数调用
int main() { cout<二、C++11的新特性,变长参数模板。
边长参数模板相当于一个模板的递归展开模型,但是它不是递归的。使用的时候,要定义一个“递归”的出口,然后定义一系列的操作,操作的是以“递归”的方式进行的。
递归函数方式展开,模板推导的时候,一层层递归展开,最后到没有参数时用定义的一般函数终止。
void test() { cout << "test()" << endl; } template < class T, class... Args> void test(T first, Args... args) { cout << typeid(T).name() << " " << first <(1, 2, 3L); //输出 int 1 int 2 long 3 test() 嗯?第一个test()应该是作为test函数递归调用的结尾。再测试一下
template < class T> void test(const T &t) { cout << "test()"<void test(T first, Args... args) { cout << typeid(T).name() << " " << first < 这。。。。好像是通过第一个test来控制在哪里结束。
最后写一个正经的累加器:
#include#include using namespace std; template int add(const T& t) { return t; } template int add(const T& t, const Args&... args) { return t + add(args...); } int main() { auto res = add(2, 3, 3); std::cout << res << std::endl; system("pause"); return 0; } //输出结果 8 上述就是小编为大家分享的怎么在C++项目中实现一个可变参数函数了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注创新互联行业资讯频道。
名称栏目:怎么在C++项目中实现一个可变参数函数
网页链接:http://scyanting.com/article/pgdosi.html