Article View: de.comp.lang.c++
Article #296Re: Typ Konversion
From: Bernd Eggink
Date: Wed, 23 Aug 1995 08:39
Date: Wed, 23 Aug 1995 08:39
48 lines
2278 bytes
2278 bytes
Christoph Liebig (chris) wrote: > Hallo ! > Bekanntlich kann man in C++ eigene Typkonversionsoperatoren definieren. > Beispielsweise um ein Objekt der Klasse A nach B zu casten, koennte in A der > operator B()' definiert werden, der ein B-Objekt zurueckliefern muss. > Was bedeutet das fuer das target-Objekt der Klasse A, wenn es nach B gecastet > wird ? Wird das Objekt A zerstoert Nur wenn Du darauf bestehst. Natuerlich kann die Funktion A::operator B() eigene Member veraendern oder gar "delete this" aufrufen - sinnvoll ist das meist nicht. Vorsichtshalber sollte man sie gleich als const deklarieren. > -- ich denke nein, und nehme an, dass bei > casts sogenannte temporary objects erzeugt werden. > Wenn dem so ist, muesste in operator B() eine neues B Objekt konstruiert > werden und ueberdies koennte der operator B() gegebenenfalls als const > deklariert werden. Ob temporaere Objekte erzeugt werden, haengt vom Compiler ab. Es steht ihm frei, sie in geeigneten Situationen wegzuoptimieren. Beispiel: A a(4711); B b(a); Ein schlauer Compiler kann direkt das Objekt b initialisieren, ohne Umweg ueber eine temporaere Variable. > Gibt es dazu naehere Vorschriften oder Konventionen (beispieslweise koennten > cast operatoren guenstigerweise nur eine Referenz zurueckliefern) ? Das mit der Referenz ist sinnvoll, wenn es sich um eine auf das A-Objekt selber (bzw. einen Basisteil davon) handelt. Allerdings ist das dann ein anderer Cast, naemlich operator B&(). Beim Cast Referenzen auf _Member_ zurueckgegeben, ist dagegen natuerlich ueberhaupt nicht zu empfehlen. Gruss Bernd -- +----------------------------------+ | Bernd Eggink | | Rechenzentrum Uni Hamburg | | admin@rzaix13.rrz.uni-hamburg.de | +----------------------------------+
Technical Details
Message-ID:
<41epfm$db3@rzsun02.rrz.uni-hamburg.de>Path:
arc1-ca.pugleaf.net!news.rrz.uni-hamburg.de!rzaix13!adminReferences:
<41ce20$q0v@rs18.hrz.th-darmstadt.de>Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!news.rrz.uni-hamburg.de!rzaix13!admin From: admin@rzaix13.uni-hamburg.de (Bernd Eggink) Newsgroups: de.comp.lang.c++ Subject: Re: Typ Konversion Date: 23 Aug 1995 08:39:18 GMT Organization: University of Hamburg -- Germany Message-ID: <41epfm$db3@rzsun02.rrz.uni-hamburg.de> References: <41ce20$q0v@rs18.hrz.th-darmstadt.de> NNTP-Posting-Host: rzaix13.rrz.uni-hamburg.de X-Newsreader: TIN [version 1.2 PL2]