C++可变参数模板举例并说明
时间: 2024-09-30 20:09:38 浏览: 33
C++11引入的可变参数模板允许我们创建更灵活的函数和类模板,以适应不确定数量的参数。以下是两个示例:
1. 函数模板可变参数示例[^1]:
```cpp
template <class ...Args>
void showArguments(Args... args)
{
(std::cout << typeid(args).name() << " ", ...); // 打印每个参数的类型
}
int main()
{
showArguments(); // 输出无参情况下的空类型名
showArguments("Hello"); // 输出"const char *"
showArguments(123, true); // 输出"int", "bool"
return 0;
}
```
在这个例子中,`showArguments`函数可以根据传入的不同类型的参数打印它们的类型。
2. 类模板带可变参数的方法[^2]:
```cpp
template<typename T, typename... Args>
void foo(const T& t, const Args&... rest)
{
std::cout << "sizeof(T): " << sizeof(T) << "\n"; // 打印第一个参数大小
std::cout << "sizeof...(Args): " << sizeof...(Args) << "\n"; // 打印剩余参数的数量
std::cout << "sizeof...(rest): " << sizeof...(rest) << "\n"; // 如果有剩余参数,也打印其数量
}
int main()
{
foo(42, "Hello"); // 输出大小信息
return 0;
}
```
这个`foo`函数展示了如何访问第一个固定的参数以及可变数量的剩余参数。
阅读全文