Ohne Referenz wird von dem Objekt zuerst eine Kopie angefertigt.
Die wird dann in der Funktion benutzt und am Ende wieder zerstört.
Je nach Objekt ist das sehr teuer. Stell dir z.B. vor du übergibst eine Liste mit einer Million Einträgen - dann müsste diese komplett kopiert werden, nur um am Ende wieder zerstört zu werden.
Mit Referenz arbeitet die Funktion auf demselben Objekt, das du ihr
übergibst - es wird keine Kopie angefertigt - so wie bei einem Zeiger.
Hmm, aber ich dachte immer, ein Zeiger erzeugt auch KEINE Kopie, bis halt auf die Adressvariable?!
Macht es dann nicht auch Sinn mein Window also sf::RenderWindow nicht per Zeiger sonderen Referenz zu übergeben?
Ok, dass das dann Ressourcensparender ist, ist klar. Und du hast natürlich Recht, das man auf soetwas auch bei kleineren Projekten achten sollte.
Das const bedeutet, dass das Objekt, auf das die Referenz zeigt, von der Funktion nicht "verändert" wird.
D.h. unter anderem, dass nur const-Methoden aufgerufen werden und keine Member-Variablen verändert werden.
Ok, also in diesem Fall nicht zwangsweise nötig, aber klarer und sicherer.