[C++] Variadic Fuction Template 可变参数函数模板

可变参数函数模板(variadic function template)主要使用了包扩展(pack expansion)的方式,即”...”,把一个模式(pattern)扩展为包中每一个元素(element)的形式;可变参数函数模板一般会使用递归(recursive)来处理包(pack)参数。一般来说需要两个函数:

  1. 需要一个非可变参数(nonvariadic)函数模板,当结束递归,最后一次调用时,会调用非可变参数版本,从而结束递归
  2. 需要一个绑定的参数,处理包(pack)中的一些元素,通过递归来顺次处理包中的元素

利用sizeof...(args)可以输出args中包括多少个参数。

下面是示例:

#include <iostream>
using namespace std;

/*通用可变参数模板*/
void showall()//空函数,接口
{

}
//使用情景:处理不限定个数的参数,处理不同类型的参数
template <typename T, typename...Args>
//对通用可变参数模板引用如下
//void showall(T &value, Args & ...args)
void showall(T value, Args... args)
{	
	cout << sizeof...(args) << endl;
	std::cout << value << std::endl;
	showall(args...);//继续传递参数,调用的是自己,是递归调用
}

int main()
{
	int num1 = 100;
	int num2 = 200;
	int num3 = 300;
	char c = 'A';
	showall(num1, num2, num3, c);
	
	while (1);
	return 0;
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值