怎么在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++项目中实现一个可变参数函数了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注创新互联网站建设公司行业资讯频道。
另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
本文名称:怎么在C++项目中实现一个可变参数函数-创新互联
网站路径:http://www.scyingshan.cn/article/ddcpsp.html


咨询
建站咨询
