C++ 模板可变参数(1)---函数

0.简介

模板可变参数是一种可以变化模板中类型参数个数并且令类或者函数支持多种不同类型参数,和不定参数个数的神奇玩法。

1.print函数

设计一个print函数,希望可以有如下效果。

print(1);
print(1,3.2);
print(1,9.9,"abc");

同一个函数可以接收可变个数目和不同类型的参数,需要模板和可变参数同时配合。

下面这段代码中,arg...就是可变参数的一个"包",其实里面有多个参数捏在一起,先可以这么理解,当调用print(1,2,3,4,5)的时候,1会分配到data上去,2,3,4,5会分配到args,然后继续递归下去,最终只剩下5自己的时候,5被分配到data上,args是个空包,然后print(args...)是个空.

template<typename T,typename... Args>
void print(T data,Args... args)
{
    cout<<data<<" ";
    print(args...);
}

此时就需要有一个无参数的print函数来支持参数是空的情况,完整写法如下.

void print()
{
    cout<<endl;
}

template<typename T,typename... Args>
void print(T data,Args... args)
{
    cout<<data<<" ";
    print(args...);
}

这样一来就可以了,print()用来接收空参数,并且输出一个换行.

    print(1,2,4.1);
    print(1,5,9.1,"hello");

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值