Hallo CodingCat!
Um ehrlich zu sein sehe ich in deiner kompletten Antwort kein Argument das deine vorherige Aussage unterstreichen würde. Zur Erinnerung:
Prinzipiell sind Referenzen auf Pointer eine unschöne Sache - auch wenn sie vielleicht möglich sind. Pointer sind nunmal Pointer und Referenzen Referenzen - das eine ist die Adresse zum Speicher, das andere ist direkter Platzhalter des Objekts - beides zusammen kann abführend wirken.
Nun hast du zwar einige Argumente gebracht, aber irgendwie überzeugt keines davon richtig.
Diese Hilfsfunktion ist im Grunde nichts anderes als ein Makro, nur in Form einer Inline-Funktion. Das Unschöne ist in diesem Fall wie bei Makros, dass der Zeiger zwar ganz normal auf den Speicher zeigt, der freigegeben wird - eine Funktion ptrDelete ist dazu da, diesen Speicher freizugeben - die Referenz als Platzhalter für diesen Zeiger allerdings nun dazu da ist, den Zeiger auf NULL zu setzen.
Zum einen gibt es gute Gründe die für eine Bevorzugung von inline-Funktionen, gegenüber Makros, sprechen. Zum anderen ist durch die Referenz auf den Zeiger klar ersichtlich, das der Zeiger selbst in der Funktion geändert werden kann (und vermutlich auch wird). Genau das bringt uns zu:
Allerdings erwartet jemand anderes, der deinen Code liest, nicht, dass eine solche Funktion auch den Zeiger auf NULL setzt.
Aufgrund der Referenz auf den Zeiger sollte es sehr wohl klar sein, das der Zeiger selbst geändert wird. Sollte dies nicht der Fall sein wäre wohl kaum eine Referenz angebracht.
Speicher freizugeben hat mit dem Zeiger an sich nämlich eigentlich nichts zu tun - insofern trägst du auf jeden Fall zur Verwirrung bei - bei einer Funktion rechnet man mit derartigem Verhalten nämlich noch weniger als bei einem Makro.
Einerseits ist ein Zeiger unabdingbar um Speicher freizugeben andererseits trägt das in diesem Fall kaum zur Verwirrung bei, da die Funktionsbezeichnung ja recht genau beschreibt was die Funktion macht.
Im Allgemeinen halte ich das Mischen von Zeigern und Referenzen deshalb für gefährlich, weil beide so unterschiedliches Verhalten an den Tag legen.
Der Unterschied von Referenz und Zeiger ist ja bekannt, aber inwiefern verhalten sich beide unterschiedlich? Und wieso ist ein Gemisch aus beidem deshalb, deiner Meinung nach, gefährlich?
Im Allgemeinen lassen sich Zeiger allerdings nunmal manipulieren und auch neu zuweisen, Referenzen dagegen nicht. In längerem Code verliert man sowas leicht aus den Augen.
Genau, aber ob du jetzt einen Doppelzeiger oder eine Referenz verwendest ist doch vollkommen egal. Beides sagt aus: Der referenzierte Zeiger kann innerhalb der Funktion manipuliert werden.
Was mich jetzt interessieren würde ist, warum du einen Doppelzeiger einer Referenz auf einen Zeiger vorziehen würdest. Wo siehst du da die Vorteile und wo wirken sich Referenzen auf Zeiger "abführend" aus?
grüße