存储/调用以前的参数到函数调用

时间:2014-06-14 03:56:50

标签: c++ function parameters overloading increment

目标

如果提供n,则square(n)应返回n * n

如果没有提供参数,square()应该增加前一个调用的n值并将其平方。

我该怎么做?

如果没有参数,我应该使用默认变量还是重载函数?

我的主要问题是从前一个调用中获得n的增量,我所能做的就是通过添加静态来获得相同的输入(' n')但是如果我在square函数中增加n那么即使提供了参数,它也会递增。例如。 n = 7,7 * 7 = 49,所以我将返回49,但是然后我从main中调用square函数中删除参数,现在是square(); ,则n应为8,并返回8 * 8 = 64。

main.cpp中:

void main()
{
    int num = 5;
    square(num);
    cout<<"The square is: "<<square(num)<<endl;
}

square.h:

 int square(static int n=1); 

square.cpp

int square(static int n)
{
return n*n;
}

1 个答案:

答案 0 :(得分:1)

使用函数重载对您有利。

在square.h中:

extern int square();
extern int square(int n);

在square.cc中:

static int lastN = 0;

int square()
{
   return (lastN+1)*(lastN+1);
}

int square(int n)
{
   lastN = n;
   return n*n;
}