C++的可变参数模板 您所在的位置:网站首页 mockitowhen参数匹配 C++的可变参数模板

C++的可变参数模板

2023-07-06 23:26| 来源: 网络整理| 查看: 265

可变参数模板可以创建这样的函数和模板类,即可接受可变数量的参数。要创建可变参数模板,需要理解几个要点

1.模板参数包

2.函数参数包

3.展开参数包

4.递归

1.模板参数包和函数参数包

C++11提供用省略号表示的元运算符,能够声明表示模板参数包的标识符。模板参数包基本上是一个类型列表。同样,它还让我们能够声明表示函数参数包的标识符,而函数参数包的标识符,而函数参数包基本上是一个值列表

template  //Args是模板参数包

void show_list1(Args…args)   //args是函数参数包

{

….

}

Args和T的差别在于,T与一种类型匹配,而Args与任意数量的类型匹配。函数参数包args包含的值列表与模板参数包Arg包含的类型列表匹配,无论是类型还是数量

2.展开参数包

可将省略号放在函数包的右边,将参数包展开

template  //Args是模板参数包

void show_list1(Args…args)   //args是函数参数包

{

show_list1(args…);

}

但表示法args…展开为一个函数参数列表。不幸的是,该函数调用与原始函数调用相同,因此它将使用相同的参数不断调用自己,导致无限递归,所以我们需要正确的使用递归。这里使用递归的核心理念是,将函数参数包展开,对列表中的第一项进行处理,再将余下的内容传递给递归调用,以此类推,直到列表为空。

template

void show_list3(T value,Args…args)

show_list3()的第一个实参决定了T和value的值,而其他实参决定了Args和args的值

掌握了这些以后我们就可以进行实际应用了

#include #include using namespace std; void show_list(){} //零个参数啥也不做 template //一个参数打印值和换行符 void show_list(const T& value) { cout


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有