Bedeutung//Kosten von Dereferenzierung
-
Hallo,
mir ist gerade eine Frage aufgestossen, und zwar kann man ja ohne das
der compiler meckert, oder hinweise gibt zwei funktionen definierenclass GrosseDatenMenge { }; class Test { void bearbeite(const GrosseDatenMenge * arg); void bearbeite(const GrosseDatenMenge& arg); };nun sagen wir, ich habe grade nur den Pointer zur Hand und
rufe das ganze so auf :GrosseDatenMenge * nix; bearbeite(*nix);Kann mir mal wer erklären, was bei der Dereferenzierung passiert?
Ich weiss das man operator * überschreiben kann, hab das aber noch nie
gemacht, also immer den vordefinierten benutzt.
Kann es bei solchem Vorgehen zu unsinnigen Kopien kommen?
Sollte man da aufpassen?
-
http://www.parashift.com/c++-faq-lite/operator-overloading.html
Bist du dir sicher, dass du mit operator* nicht einen anderen Operator überlädst (Multiplikation ...)?
-
(D)Evil schrieb:
http://www.parashift.com/c++-faq-lite/operator-overloading.html
Bist du dir sicher, dass du mit operator* nicht einen anderen Operator überlädst (Multiplikation ...)?wie gesagt, habe ich diesen operator noch NIE überladen,
ich weiss nur das es geht (smart-pointer)deshalb frage ich mich ja, ob es fälle gibt, wo sowas extrem
laufzeit kosten kann, eigentlich nur für den vordefinierten fall
-
Ob eine Kopie angelegt wird hängt von deiner Funktion ab (ob Referenz oder by-value) und nicht vom Dereferenzieren. Referenzen sind ja (meist, je nach Compiler) auch nur Pointer.
Und aufpassen sollte man eigentlich immer.