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.