Optionale parameterübergabe



  • Gibt es eine explizite Deklaration für eine optionale parameterübergabe?

    Pointer respektive array übergabe ist mir bekannt.

    Seid gegrüßt.



  • Einen optionalen Parameter musst du bei der Deklaration mit einem Standard-Wert versorgen (nicht bei der Implementation!).

    int myFunc(int paraA,char paraB,double paraC=1.0);
    
    int myFunc(int paraA,char paraB,double paraC) {
      //...
    }
    

    Variable Parameteranzahl gibt's auch, aber das ist ein anderes Thema...

    EDIT: Der optionale Parameter muss natürlich am Ende der Liste stehen.



  • Also ich denke mal du willst ein Objekt oder eine Variable,
    an eine Funktion weitergeben und nicht Kopieren, damit er genau auf die Variablen aus dem Programm zugreift musst du/kannst du folgendes schreiben:

    include <iostream>
    using namespace std;
    
    void funktion(int& ErstesInt, int& ZweitesInt, int& NeuerInt); // Prototyp dekladieren.
    // Mit dem &(Referenz Operator) kann man den Compiler miteilen, das er direkt // auf die objekte zugreifen soll.
    
    int main()
    {
       // Variablen die übergeben werden sollen.
       int A; 
       int B;
    
       // Variable in die geschrieben wird.
       int C;
    
       funktion(A,B,C);
    
       cout << C << endl;
    }
    
    void funktion(int& ErstesInt, int& ZweitesInt, int& NeuerInt) // Definition
    {
       NeuerInt = ErstesInt + ZweitesInt;
    }
    

    Da kann void verwendet werden, weil er nichts zurückgeben muss.
    Ohne Referenzen würde das so ausehen. Hier werden die Variablen nicht gegeben sondern temporär kopiert.

    include <iostream>
    using namespace std;
    
    int funktion(int ErstesInt, int ZweitesInt); // Prototyp dekladieren.
    // Hier wird nur Kopiert anstat Referenziert.
    
    int main()
    {
       // Variablen die übergeben werden sollen.
       int A; 
       int B;
    
       // Variable in die geschrieben wird.
       int C = funktion(A,B);
    
       cout << C << endl;
    }
    
    int funktion(int ErstesInt, int ZweitesInt) // Definition
    { 
       int NeuerInt = ErstesInt + ZweitesInt;
       return NeuerInt;
    }
    

    Hoffe ich konnte weiter helfen^^



  • Hmm, also einer von uns hat irgendwie am Thema vorbeigeschrieben... 😃 🙂



  • Jo danke euch beiden,

    _matze: das ist genau was ich gesucht habe 😉

    seid gegrüßt



  • _matze schrieb:

    Hmm, also einer von uns hat irgendwie am Thema vorbeigeschrieben... 😃 🙂

    Ich habe das so, wie du verstanden.

    Zusätzlich gibt es noch die normale Überladung, die auch eine Form der optionalen Parameterangabe darstellt.

    int myFunc (int paraA,char paraB,double paraC)
    {
    ...
    }
    
    int myFunc (int paraA,char paraB)
    {
     ...
     //vielleicht das hier:
     myFunc ( paraA,paraB, 1.0f);
    }
    

Log in to reply