C++ 使用默认参数重载

C++ Overloading with default parameters

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

    #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
    }

我遇到了错误,我该如何正确执行?

如果您希望 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);
                           ^^          ^^

是一个错误。

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

#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);
}

在 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;
    }
}