C++参数包

记录一下对参数包的新认识,前置…叫做XX包,后置…叫做包扩展。我对这个包扩展的理解是递归把这个包分解了,而不是扩展,就比如说这个函数void fun(T t,Args… args)下面的return是解出来一个参数给t,解出来一个参数给t,直到剩下最后一个参数的时候调用最上面的函数(相当于递归函数的 出口),如果没有最上面的这个fun是不能运行的。 这个T类型也必须放在函数的开头,如果不是这样会发生未找到匹配函数,这个很好理解。还是拿这个函数来举例子,s传给T,age和grade变成一个参数包,输出完s递归把age分解给T,然后grade由上面的函数输出,整个调用就结束了。

template<typename T>
void fun(T args) {//最后一个参数才调用这个函数
	cout << args << endl;
}
template<typename T,typename ...Args>//模板上的...叫做模板参数包
void fun(T t,Args... args) {//这个叫做参数包
	cout << t << endl;
	return fun(args...);//后置的...叫做包扩展。
	//cout << args << endl;
}
int main() {
	int age = 21;
	string s = "dxgzg";
	int grade = 100;
	fun(s, age,grade);
	return 0;
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值