2016-04-30 19 views
0

Ich habe eine kleine Frage, wie kann ich Standardargumente in einer Funktion initialisieren?C++ Überladen mit Standardparametern

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

ich bekomme Fehler, wie kann ich richtig?

+0

Bitte senden Sie die Fehler, die Sie bekommen. Und lesen Sie auch [this] (http://stackoverflow.com/help/how-to-ask) Post, wie Sie bessere Fragen stellen können, die Ihnen helfen werden, Ihnen bessere Antworten zu geben. Schließlich, [dieses Tutorial] (http://www.learncpp.com/) ist ein großartiger Ort, um mit dem Lernen von C++ zu beginnen. –

+0

Beachten Sie, dass hier nur der Fehler auftritt, dass Sie die lokale Variable 'a' als Standardparameter verwenden. Da mehrere Deklarationen zulässig sind, wenn Sie "a" durch etwas ersetzen, das ausgewertet werden kann, wenn die Funktion aufgerufen wird, wird alles funktionieren, aber Sie werden nur 1 Funktion haben. – PcAF

Antwort

2

Sie werden verwenden, um anstelle von Standard-Parameter zu überlasten:

#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

Wenn Sie Standardwert mögen für b und c der Wert a sein, dann sollten Sie eine Überlastung verwenden:

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

C++ keine Parameter erlauben Argumente als Standard zu verwenden. Also das

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

ist ein Fehler.

0

In C++

sollten Sie den Code für nur eine Methode, einschließlich der optionalen Parameter und die Standardwerte Prototypen und implementieren ist der optionale Parameter wird weggelassen eine konstante sein muss und kein unbekannter Wert ...

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