Konvertierungsoperator
-
Hallo zusammen,
ich hab mal eine kurze Nachfrage bezüglich des Konvertierungsoperators um sicher zu gehen, dass ich keine Memory-Leaks oder so produziere:
struct Foo{ operator Bar(){ Bar bar; return bar; } };In diesem Fall wird ja im Falle einer impliziten Konvertierung eine Kopie angelegt.
struct Foo{ operator Bar&(){ return bar; } Bar bar; };Hier wird eine Referenz zurückgegeben und diese ist folglich gültig bis Foo zerstört wird.
Sehe ich das richtig?
Es ist also als wäre der Typ nach dem Schlüsselwort "operator" der Rückgabetyp, oder? Muss ich irgendetwas besonderes beim Konvertierungsoperator beachten, was also unterschiedlich ist zu einer normalen Funktion (abgesehen von der Syntax)?Gruß,
XSpille
-
-
XSpille schrieb:
Sehe ich das richtig?
Ja.
XSpille schrieb:
Es ist also als wäre der Typ nach dem Schlüsselwort "operator" der Rückgabetyp, oder?
Ja.
XSpille schrieb:
Muss ich irgendetwas besonderes beim Konvertierungsoperator beachten, was also unterschiedlich ist zu einer normalen Funktion (abgesehen von der Syntax)?
Naja, so ein Operator wird auch gerne mal aufgerufen, ohne dass man damit rechnet. Deswegen solltest du eher sparsam mit solchen Operatoren umgehen.
-
thx

-
krümelkacker schrieb:
Naja, so ein Operator wird auch gerne mal aufgerufen, ohne dass man damit rechnet. Deswegen solltest du eher sparsam mit solchen Operatoren umgehen.
Eine kleine Verbesserung gibts dazu im C++11 Standard: analog zu
explicitKonstruktoren gibts jetzt auchexplicitfür Konvertierungsoperatoren