[C++] Immer 'Call by reference'

Programmiersprachen, APIs, Bibliotheken, Open Source Engines, Debugging, Quellcode Fehler und alles was mit praktischer Programmierung zu tun hat.
Antworten
Benutzeravatar
hill 2
Beiträge: 41
Registriert: 07.05.2007, 16:41
Kontaktdaten:

[C++] Immer 'Call by reference'

Beitrag von hill 2 »

Hi Leute,

bisher habe ich überwiegend mit Java programmiert und will auf C++ umsteigen, weil es in der Spieleentwicklung bevorzugt wird. Ich habe letztens Referenzen und Zeiger bearbeitet. Jetzt frage ich mich, warum man nicht einfach bei jeder Gelegenheit Referenzen und Zeiger benutzen soll anstatt die Variable "normal" als Parameter zu übergeben. Wenn man nicht will, dass die Variable verändert will, kann man den Parameter einfach konstant machen. Hier ein Beispiel, um zu verdeutlichen, was ich meine:

Code: Alles auswählen

void zeigeInfo(const Auto &auto){
	cout << "Modell: " << auto.modell<< endl;
	cout << "Marke: " << auto.marke << endl;
}

statt

Code: Alles auswählen

void zeigeInfo(Auto auto){
	cout << "Modell: " << auto.modell<< endl;
	cout << "Marke: " << auto.marke << endl;
}

Theorethisch müsste die erste Option immer schneller sein. Wieso also nicht immer Referenzen benutzen, wenn man Parameter übergibt?
Ich hoffe ihr versteht, was ich meine.
Viele Grüße

hill 2
Benutzeravatar
eXile
Establishment
Beiträge: 1136
Registriert: 28.02.2009, 13:27

Re: [C++] Immer 'Call by reference'

Beitrag von eXile »

Benutzeravatar
dot
Establishment
Beiträge: 1745
Registriert: 06.03.2004, 18:10
Echter Name: Michael Kenzel
Kontaktdaten:

Re: [C++] Immer 'Call by reference'

Beitrag von dot »

Es ist eben ein Trade-off von Kopieraufwand vs. Zugrifsszeit. Bei großen Objekten macht Übergabe per Reference to const bzw. Pointer to const potentiell Sinn, um das Kopieren zu sparen. Bei kleinen Objekten wie einem int nicht. Denn dein int ist gleich schnell zu kopieren wie der Pointer selbst und der Zugriff über den Pointer bedeutet eine zusätzliche Indirektion...

Abgesehen davon ist der von eXile verlinkte Artikel natürlich unbedingt zu beachten.
Antworten