C ++使用默认参数重载

时间:2016-04-30 21:45:28

标签: c++ function overloading

我有一个小问题,如何在函数中初始化默认参数?

    #include <iostream>
    #include <cmath>

    using namespace std;
    float area(float a, float b, float c);
    float area(float a, float b=a, float c =a);


    int main() {

        cout << area(10) << endl;
        return 0;
    }

float area(float a, float b, float c){
    return a*b*c
    }

我收到错误,我怎么能正确地阻止?

3 个答案:

答案 0 :(得分:2)

您将不得不使用重载而不是默认参数:

#include <iostream>
#include <cmath>

using namespace std;
float area(float a, float b, float c);
float area(float a);

int main() {

    cout << area(10) << endl;
    return 0;
}

float area(float a, float b, float c){
  return a*b*c;
}
float area(float a){
  return area(a,a,a);
}

答案 1 :(得分:1)

如果您希望bc的默认值为a的值,那么您应该使用重载:

float area(float a, float b, float c){
   return a*b*c
}
float area(float a) {
   return area(a, a, a);
}

C ++不允许使用参数作为默认参数。所以这个

float area(float a, float b=a, float c =a);
                           ^^          ^^

是一个错误。

答案 2 :(得分:0)

在C ++中

你应该只为一个方法(包括可选参数)设置原型并实现代码,默认值是可选参数被忽略必须是常量而不是未知值...

    float area(float a, float b=0, float c=0);
    int main() {
        cout << area(10) << endl;
        return 0;
    }

float area(float a, float b=-1, float c =-1);){
    if(b==-1 ||c==-1)
    {
        return a*a*a;
    }else
    {
        return a*b*c;
    }
}