Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 |
void funk(Object& obj){ Object = Object(...); } //bei callbyref oder callbyval sieht man kein unterschied funk(obj); funk(obj); |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 |
void funk(Object* obj){ *Object = Object(...); } funk2(Object* obj){ Object newobj; obj = &newobj; } |
Zitat von »"kiba"«
Woher sollte man genau wissen das der Übergebe Parameter mit hilfe der reference gesetzt wird oder einfach nur kopiert und dann gesetzt.
Zitat von »"kiba"«
Was passiert überhaupt mit lokalen Varaiblen die gelöscht wurden aber der Zeiger weitergegenen wurde. (Das selbe ,was passiert mit Referencen)
Wenn man als Programmierer der Funktionen einigermassen konsistent bleibt, kann man durch die Schnittstelle bereits sehr viel aussagen. Wenn ich eine Non-Const-Referenz sehe, gehe ich davon aus, dass das übergebene Objekt verändert wird. Bei einer Const-Referenz hingegen vertraue ich darauf, dass nirgendwo ein const_cast dahinter steckt. Bei einem Zeiger ist es üblich, dass Null übergeben werden kann. Das soll natürlich nicht heissen, dass man sich nicht mehr mit der Doku auseinandersetzen sollte, sondern, dass die Deklaration dem Anwender bereits einiges mitteilen kann.Zitat von »"MasterK"«
Wenn du die funktion aufrufst, hast du doch eine doku. Oder du kennst die funktionsdeklaration an sich. Nur die tatsache, dass du jetzt einen wert, eine referenz oder einen pointer übergibst, gibt dir doch keine ausreichende information.
Darauf sollte man sich aber nicht verlassen, zudem ist es meist nur eine Warnung. Man sollte selbst sicherstellen, dass die Objekte noch existieren, wenn man per Zeiger oder Referenz auf sie zugreift.Zitat von »"MasterK"«
Zumindest bei der rückgabe einer referenz auf objekte auf dem stack meckert der compiler idR.
Zitat von »"kiba"«
Gibt es denein paar Faustregen oder Tipps von euch profies.
z.b.
Lieber Referencen statt const zeiger.
Liest du meine Beiträge auch? Ich habe mir extra die Mühe gegeben und versucht, dir einige Anwendungsfälle aufzuzeigen. :roll:Zitat von »"kiba"«
Gibt es denein paar Faustregen oder Tipps von euch profies.
z.b.
Lieber Referencen statt const zeiger.
Warum sollte bei Referenzen eher optimiert werden können? Nach dem Compilevorgang läuft es eh in fast allen Fällen darauf hinaus, dass Referenzen wie Zeiger gehandhabt werden.Zitat von »"PCShadow"«
Wenn du ein objekt von der funktion aus verändern willst, übergib nen Zeiger oder ne referenz, je nachdem, was dir lieber ist, außer bei inlines, da kann bei referenzen eher optimiert werden.
Werbeanzeige