Seite 1 von 1

[C++] Immer 'Call by reference'

Verfasst: 27.06.2012, 20:38
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

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

Verfasst: 27.06.2012, 21:15
von eXile

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

Verfasst: 27.06.2012, 22:08
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.