可变参数函数是接受可变数量参数的函数,在不少场景下,可变参数函数是非常有用的。比如想打印日志时,可以接受任意数量的参数,然后将这些参数拼接输出到控制台,如下:1234{// ...;LogInfo(user, cost, action, result);}在C++中,可变参数函数的实现方法也是不断演进的,从最初C风格的可变参数列表,到 C++11 的变参模板,再到 C++17 引入的折叠表达式,见证了 C++ 语言的逐步发展和完善。接下来本文会介绍这三种方式的实现细节以及优缺点。C 风格变长参数列表最早是 C 风格的变长参数列表,它通过中定义的宏实现,主要包括:va_list, va_start, va_arg, va_end。下面是一个使用 C 风格变长参数的例子,实现了一个函数来计算任意数量整数的和:12345678910111213141516171819#include#include// 需要提供参数个数intsum(intn, ...){inttotal =0;va_list args;va_start(args, n);for(inti =0; i < n; ++i) {total +=va_arg(args,int);}va_end(args);returntotal;}intmain(){std
...
继续阅读
(54)