Parameter



  • Sagen wir mal ich habe eine Funktion wie diese:

    void foo1(DT* x) { DT irgendwie verändern;};
    void foo2(DT& x) { DT irgendwie verändern;};
    void foo3(DT x) { DT irgendwie verändern;};
    

    Ich habe drei Variable erstellt vom Datentyp DT: a(Zeiger),b(Referenz),c
    Und nun benutze ich die Funktion:

    std::cout<<"Vorher: "<<a<<b<<c<<endl;
    foo1(a);
    foo2(b);
    foo3(c);
    std::cout<<"Nachher: "<<a<<b<<c<<endl;
    

    c wird sich nicht verändert haben, da ja in der Funktion eine Kopie (X) von c erstellt wurde, die dann verändert wurde. Aber wie ist es mit a und b?

    (An alle potenziellen Motzer: DT = Datentyp. Ist irgendein Datentyp. Und mir ist klar, das der Code so nicht funzt. Also verschon mich mit unsachlichen Sprüchen.)



  • foo1 und foo2 können den übergebenen DT verändern.



  • a wird sich auch nicht verändert haben, da a ebenfalls als Kopie übergeben wird. Möglicherweise ändert sich das Objekt, was von a referenziert wird.

    b dagegen schon. Die eigentliche Referenz ändert sich natürlich nicht (das tun Referenzen nie), aber das referenzierte Objekt, das ja in deinem cout-Ausdruck angesprochen wird, könnte in der Funktion verändert worden sein.


Anmelden zum Antworten