有没有办法在可变参数函数中指定默认参数?(也适用于模板)
问问题
3277 次
4 回答
9
于 2010-11-09T05:01:27.640 回答
3
为什么需要可变参数和默认参数?
例如,
myFunc(int a=5, int b=5, int c=5);
可以接收 0-3 个具有默认值的参数,并且
myFunc(...)
可以接收任意数量的参数。在函数内部,您可以检查是否缺少参数并根据需要填写默认值。
于 2010-11-09T05:02:15.940 回答
3
首先是一个 C++ 答案。
默认参数是一个参数,您将知道该函数应该并且将会看到所提供的参数。因此,您应该明确命名这些参数,然后可以提供默认参数。这将是您的功能的“短”版本。
如果除了后面的这些默认参数之外,您还希望有一个va_arg
参数列表的可能性,只需使用第二个版本来重载您的函数即可。对于那个“长”版本,无论如何您都必须提供所有参数,因此在这里使用默认参数是没有意义的。
现在是 C 答案
可能您没有研究过这样的事情,但是使用C99的va_arg
宏特性,也可以在 C 中为函数定义默认参数。然后,宏语法比 C++ 更宽松,因为您也可以在函数调用的中间省略参数,而不仅仅是在结尾处。因此,如果您将函数声明为
int toto(int a, ...)
并为位置 2 和 3 指定默认参数,例如,您可以将其称为
toto(4,5,,,37);
因此,从这个意义上讲,在 C 中,可以按照您的要求进行操作。我个人肯定会犹豫这样做。
于 2010-11-09T11:00:57.800 回答
2
不,没有办法做到这一点。
于 2010-11-09T04:53:53.333 回答