C++11新特性——可变参数列表

可变参数模版是C++11新增的最强大的特性之一,它对参数进行了泛化,能支持任意个数、任意数据类型的参数。

语法:在模板中类型名前加...,在参数类型名后加...,递归传参时在变量名后加...

sizeof...(args)可以求还剩多少参数未展开

示例:

#include <iostream>
using namespace std;

template<typename T>
void show(T output)
{
	cout<<output<<endl;
}

void print()// 递归终止时调用的非模板函数,函数名要与展开参数包的递归函数模板相同。
{
	cout<<"print结束\n";
}
template<typename T,typename ...Args>
void print(T arg,Args... args)
{
	cout<<"本次输出的参数:";
	show(arg);
	cout<<"还剩"<<sizeof...(args)<<"个参数\n";
	print(args...);//递归调用,展开参数
}

template<typename ...Args>
void func(const string& str,Args... args)//还可以有非模板参数
{
	cout<<str<<endl;
	print(args...);
	cout<<"func结束\n";
}

int main()
{
	//print("测试",3,"个参数");
	//print(4,"个参数也",1,"样");
	func("此语句不是可变参数","这里开始","是可变参数");
	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值