C++中的变参数模板(variadic templates)是C++11 引入的功能,它允许定义可以接受任意数量参数的模板。变参数模板可以用于编写更加灵活的模板函数和类,以处理不确定数量的参数。
下面是一个简单的示例,展示了如何使用变参数模板来实现一个打印函数,可以接受任意数量的参数并将它们打印出来:
#include <iostream>
// 递归终止条件:没有参数时结束递归
void printArgs() {
std::cout << std::endl;
}
// 递归调用:打印第一个参数,然后继续打印剩余参数
template<typename T, typename... Args>
void printArgs(T arg, Args... args) {
std::cout << arg << " ";
printArgs(args...);
}
int main() {
printArgs(1, 2, 3, "Hello", 3.14);
return 0;
}在上述代码中,printArgs() 函数是一个递归函数模板。当没有参数时,递归终止,打印完所有参数后换行。而当有参数时,它会打印当前参数,并将剩余参数传递给下一次递归调用。
在 main() 函数中,我们调用 printArgs() 并传递了整数、字符串和浮点数等不同类型的参数。编译并运行该程序,将输出:1 2 3 Hello 3.14。
这个示例展示了如何使用变参数模板来接受任意数量和类型的参数,并在函数内部进行处理。变参数模板可以与其他模板功能(如类型推导、模板特化等)结合使用,以满足更多复杂的编程需求。