Referenz als Defaultparameter



  • Hallo Leute!

    Ist es möglich, eine Referenz die ein Funktionsparameter ist, einen Defaultwert zuzuweisen?

    Fiktives nicht funktionierendes Beispiel:

    std::vector< std::string > &ref = 0
    

    Geht soetwas?



  • Hallo,

    Da eine Referenz immer auf ein gültiges Objekt zeigen muß, Nein.



  • Als Funktionsparameter (oder auch von Methoden) kannst du aber z.B.

    void f(const std::string &str = std::string());
    

    oder

    static std::vector< std::string > st_vec;
    void f(std::vector< std::string > &vec = st_vec)
    

    deklarieren.


  • Mod

    Delryn schrieb:

    Hallo Leute!

    Ist es möglich, eine Referenz die ein Funktionsparameter ist, einen Defaultwert zuzuweisen?

    Fiktives nicht funktionierendes Beispiel:

    std::vector< std::string > &ref = 0
    

    Geht soetwas?

    sofern der initialisierunsgausdruck dann ein lvalue des entsprechenden typs ist (oder implizit in diesen gewandelt werden kann), kein problem. für die konstante 0 trifft das allerdings niemals zu 😉
    gewöhnlich macht man das mit referenzen auf const, denn dann kann man temporaries benutzen - bei referenzen auf non-const ist es eher schwierig, einen sinnvollen ausdruck zu finden.


Anmelden zum Antworten