Next: Keine Referenzrückgabe für neue
Up: 50 Ways to Improve
Previous: const benutzen
Wenn nicht anders angegeben, wird Wertübergabe für Parameter
und Funktionsergebnisse verwendet. Das bedeutet, daß Werte
kopiert werden müssen (Copy-Konstruktor).
Beispiel:
class string {...};
class person
{ string name, vorname;
...
};
class student : public person
{ string uni, fach;
...
};
student machnix(student s)
{ return s;
}
Was kostet ein Aufruf von machnix???
- 1
- Copy-Konstruktor student (Parameter)
- 2
- Copy-Konstruktor (person)
- 3
- Konstrukor string (name)
- 4
- Konstrukor string (vorname)
- 5
- Konstrukor string (uni)
- 6
- Konstrukor string (fach)
- 7
- Copy-Konstruktor student (Ergebnis)
- 8
- Copy-Konstruktor (person)
- 9
- Konstrukor string (name)
- 10
- Konstrukor string (vorname)
- 11
- Konstrukor string (uni)
- 12
- Konstrukor string (fach)
- 13
- Destruktor student (Parameter)
- 14
- Destrukor string (fach)
- 15
- Destruktor string (uni)
- 16
- Destruktor (person)
- 17
- Destrukor string (vorname)
- 18
- Destrukor string (name)
- 19
- Destruktor student (Ergebnis)
- 20
- Destrukor string (fach)
- 21
- Destruktor string (uni)
- 22
- Destruktor (person)
- 23
- Destrukor string (vorname)
- 24
- Destrukor string (name)
Also: Übergabe und Ergebnisrückgabe per Referenz:
student & machnix( student &s)
{ return s;
}
Hier wird kein Konstruktor und kein Destruktor aufgerufen,
da keine neuen Objekte kreiert werden.
Das geht natürlich nicht immer:
Next: Keine Referenzrückgabe für neue
Up: 50 Ways to Improve
Previous: const benutzen
Peter Pfahler, 1997