C++新特性
语言
标准库
语言
模板
参数数量不定的模板 Variadic Templates
//处理最后情况的终止函数
void print()
{
}
#include <iostream>
using namespace std;
template<typename T, typename... Types>
void print(const T& fristArg, const Types&... args)
{
std::cout<<fristArg<<std::endl;
print(args...);
}
int main()
{
print("hello",15, 22 , "char");
return 0;
}
- 1. 注意三种不同的…的应用环境,这些都是语法规则,所以记住即可;…就是一个所谓的pack(包)。
- 2. 还要注意的是,在可变模板参数内部可以使用sizeof…(args)得到实参的个数。
- 3. 如果同时定义了void print(const Types&… args):
-
参数个数:利用参数个数逐一递减的特性,实现递归函数的调用,使用函数模板完成。
-
参数类型:利用参数个数逐一递减以致参数类型也逐一递减的特性,实现递归继承或递归复合,以类模板完成。