可变参数模板是采用可变数量的参数的模板。可变参数函数模板是可以使用多个参数的函数。
可变函数模板的语法::
template(typename arg, typename... args)
return_type function_name(arg var1, args... var2)
Note :, typename arg, typename... args must be
inside angular brackets.
以下是C++中的示例,以显示如何使用可变参数函数模板:
// C++ program to demonstrate working of
// Variadic function Template
#include
using namespace std;
// To handle base case of below recursive
// Variadic function Template
void print()
{
cout << "I am empty function and "
"I am called at last.\n" ;
}
// Variadic function Template that takes
// variable number of arguments and prints
// all of them.
template
void print(T var1, Types... var2)
{
cout << var1 << endl ;
print(var2...) ;
}
// Driver code
int main()
{
print(1, 2, 3.14, "Pass me any "
"number of arguments",
"I will print\n");
return 0;
}
输出:
1
2
3.14
Pass me any number of arguments
I will print
I am empty function and I am called at last.
请记住,编译器将模板替换为实际功能。
可变参数模板的工作方式如下:
语句print(1,2,3.14,“向我传递任意数量的参数”,“我将打印\ n”);通过以下方式进行评估:
首先,编译器将语句解析为
cout<< 1 <
现在,编译器找到一个可以接受这些参数的print()函数,结果再次以类似方式执行可变参数print()函数:
cout<< 2 <
再次将其解析为以下形式:
(*)
cout<< 3.14 <
(*)
cout<< "Pass me any number of arguments" <
(*)
cout<< "I will print\n" <
现在,在这一点上的函数重载,其匹配,即它没有参数的函数的空函数,编译器搜索。
这意味着,具有1个或多个参数的所有函数都与可变参数模板匹配,而没有参数的所有函数都与空函数匹配。
参考 :
http://www.cplusplus.com/articles/EhvU7k9E/
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程” 。