c++怎样编写不确定参数个数的函数?

2025-04-06 12:01:24
推荐回答(3个)
回答1:

重载和缺省都不能解决楼主的问题。想解决这个问题,必须用到va_list。
但是注意,并不是所有编译器都支持这个功能,下面这个简单的求均值函数在VC6.0下编译通过。希望楼主能用到自己的实际应用中。

#include
#include

using namespace std;

double average ( int num, ... )
{
va_list arguments; // A place to store the list of arguments
double sum = 0;

va_start ( arguments, num ); // Initializing arguments to store all values after num
for ( int x = 0; x < num; x++ ) // Loop until all numbers are added
sum += va_arg ( arguments, double ); // Adds the next value in argument list to sum.
va_end ( arguments ); // Cleans up the list

return sum / num; // Returns some number (typecast prevents truncation)
}
int main()
{
cout<< average ( 3, 12.2, 22.3, 4.5 ) < cout<< average ( 5, 3.3, 2.2, 1.1, 5.5, 3.3 ) <}

补充一句:不确定输入参数个数的函数应该尽量的避免使用,除非万不得已,最好不要用。

回答2:

不确定参数个数的时候通常用的是函数的重载,可以理解成 函数名相同的两个不同的函数.

不确定参数类型的话可以用 模板(template).传什么类型就变成什么类型.

回答3:

想到两种方法:

一是用函数重载,列出带有不同个数参数的函数;

二是用带默认值的形参实现。