当前位置:   article > 正文

C++参数包

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;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/576905
推荐阅读
相关标签
  

闽ICP备14008679号