【发布时间】:2018-02-04 01:54:43
【问题描述】:
在 C 中,定义可变长度参数的唯一方法是用省略号声明其原型,并使用 va_list、va_start、va_arg、va_end 提取它们。就像printf 系列和scanf 系列一样。
在 C++11 中,引入了一种新方法,如下所示。
template <typename T, typename... MoreT>
void func(T arg, MoreT... args){
// Do some stuff
func(args);
}
每种方法的优缺点是什么?在 C++ 中是不鼓励使用还是鼓励使用它们中的任何一个?
【问题讨论】:
-
您为什么不花点时间了解可变参数的工作原理,然后您将能够更好地判断两种方法的相对指标。这将为您提供比 stackoverflow.com 上的简短答案更多的信息。
标签: c++ c++11 variadic-functions ellipsis