重载和缺省都不能解决楼主的问题。想解决这个问题,必须用到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 ) <
补充一句:不确定输入参数个数的函数应该尽量的避免使用,除非万不得已,最好不要用。
不确定参数个数的时候通常用的是函数的重载,可以理解成 函数名相同的两个不同的函数.
不确定参数类型的话可以用 模板(template).传什么类型就变成什么类型.
想到两种方法:
一是用函数重载,列出带有不同个数参数的函数;
二是用带默认值的形参实现。