第二节 · 安全部门 · 异常处理库
C++11 的可变参数模板和 C++17 的折叠表达式让函数能够接受任意数量的参数。
C 风格可变参数
#include <cstdarg>
// 旧的方式,不类型安全
double average(int count, ...)
{
va_list args;
va_start(args, count);
double sum = 0;
for (int i = 0; i < count; ++i)
{
sum += va_arg(args, double);
}
va_end(args);
return sum / count;
}
int main()
{
cout << average(3, 1.0, 2.0, 3.0) << endl; // 2
return 0;
}可变参数模板
sizeof... 运算符
折叠表达式(C++17)
带初始值的折叠
可变参数构造
emplace 系列函数
转发所有参数
类型安全的 printf
元组辅助
习题
实现一个
min函数,接受任意数量的参数并返回最小值。使用折叠表达式实现字符串拼接函数。
实现类型安全的
printf替代品。
Last updated