Lektion 38:const-ReferenzenReferenz-Parameter werden auch gerne dafür verwandt, um Funktionaufrufe schneller zu machen. Stellen Sie sich vor, Sie haben eine Klasse, die viele Attribute enthält, z.B.
und dazu eine Funktion, die aus einem Array voller Studenten eine Liste aller Namen ausdruckt. Weil es übersichtlicher ist, wird diese Funktion in zwei kleinere Funktionen zerlegt:
Weil die Übergabe des Studenten in der Funktion printStudent call by value ist, wird jedesmal eine komplette Kopie des Studenten angelegt und in der lokalen Variablen student gespeichert. Weil die Klasse Student recht viele Attribute besitzt, kostet das viel Rechenzeit. Deshalb ist es üblich, zu diesem Zweck einen Referenz-Parameter zu verwenden(Referenz-Parameter, Performance).
Die Übergabe ist jetzt erheblich schneller, weil nur ein (als Referenz getarnter) Zeiger auf das zu übergebende Objekt übergeben wird. Doch mit dieser Variante wäre nie sichergestellt, daß die Funktion printStudent nicht doch Veränderungen am übergebenen Objekt vornimmt. Um den Geschwindigkeitsvorteil der Referenz-Übergabe mit dem Sicherheitsvorteil der Wert-Übergabe kombinieren zu können, gibt es die Übergabe als const-Referenz.
Ab jetzt wehrt der Compiler alle Versuche ab, innerhalb der printStudent-Funktion Änderungen am übergebenen Objekt vorzunehmen. Innerhalb dieser Funktion ist die Variable student eine Konstante. Falls Ihnen Fehler im Text auffallen oder Sie Verbesserungsvorschläge haben, dann schicken Sie mir bitte eine Mail. Ich werde mich dann sofort darum kümmern. [aktuelle Version] [inhalt] [index] [Fehlerkorrektur, Verbesserungsvorschlag] © Volkard Henkel <volkard@normannia.de>, last update: 08/25/00 |