大挪耗

c++可变参数模板

#include "iostream"
#include "thread"

using namespace::std;

//递归指针时调用的非模板函数,函数名要与展开参数包的递归函数模板。
void print()
{
    cout<<"递归终止。\n";
}

template<typename T>
void show(T girl)//向超女表白的函数,参数可能是
{
    cout<<"亲爱的"<<girl<<".我是一只傻傻鸟。\n";
}


//展开参数包的递归的函数模板。
template<typename T,typename ...Args>
void print(T arg,Args... args)
{
    //cout<<"参数: "<<arg<<endl;//显示本次再看的参数
    show(arg);//把参数用于表白
    cout<<"还有"<<sizeof...(args)<<"个参数未展开。"<<endl;//显示为再看参数的告诉
    print(args...);//进行展开参数。

}
template <typename ...Args>
void func(const string&str,Args...args)
{
    cout<<str<<endl;//表白之前,喊句口号;
    print(args...);
    cout<<"表白完成\n";
}


int main(void)
{
    //print("冰冰",8,"西施",3);
    func("我是绝世帅哥。","冰冰",8,"西施",3);
}

我是绝世帅哥。
亲爱的冰冰.我是一只傻傻鸟。
还有3个参数未展开。
亲爱的8.我是一只傻傻鸟。
还有2个参数未展开。
亲爱的西施.我是一只傻傻鸟。
还有1个参数未展开。
亲爱的3.我是一只傻傻鸟。
还有0个参数未展开。
递归终止。
表白完成


已发布

分类

可以收藏大挪耗一下。下载麻烦点城通网盘,站长保证下载速度,不会限速的,放心点就是了;分卷,安卓下载为txt:程序下载为url,不会下载参考不会下载。如果你想让本站活的久一点,请直接捐助

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注