Nun, ob ein Objekt verändert werden kann, sollte primär an der Signatur der Funktion erkennbar sein. Hieran wird ja z. B. entschieden welche Methode eines Objektes aufgerufen wird (Stichwort: const-correctness).
es geht mir einfach darum, dass man sich mehr gedanken darüber macht was mit den daten passieren kann wenn man einen zeiger übergibt. eine referenz wird übergeben ohne, dass man darüber nachdenken muss. es gibt sicher momente wo man eine referenz übergibt ohne es zu wissen und sich wundert, dass die daten anders sind als man erwartet. wenn ich das auch nur einmal verhindern kann stunden lang zu suchen nehm ich es in kauf manuell zu dereferenzieren.
Meistens ist es viel praktischer, den Wert, den eine reine Get-Funktion liefern soll, mittels return und ganz ohne Referenzen/Zeiger zu übergeben, so läuft man auch nicht Gefahr, dass NULL übergeben wird, wenn es eigentlich nicht erlaubt ist.
ich hoffe du meinst damit nicht, dass man keine referenz zurück geben darf/sollte. bei manchen methoden macht das durchaus sinn