🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: de.comp.lang.c++
Article #766

Re: Frage: illegal structur operation

#766
From: Nico Josuttis
Date: Fri, 10 Nov 1995 17:26
44 lines
2124 bytes
In article <47n7fl$aki@rzsun02.rrz.uni-hamburg.de>,
Bernd Eggink <admin@rzaix13.uni-hamburg.de> wrote:
>>  Das unterscheidet C/C++ z.B. von Pascal, wo ein IF-Konstrukt immer
>>  ein boole'scher Ausdruck ist (so etwas gibt es in C/C++ ja nicht).
>
>Das ist, mit Verlaub, Unsinn. "if (ausdruck)" wird (in aelteren Compilern) 
>einfach ausgewertet, indem nachgesehen wird, ob "ausdruck" == 0 ist
>oder nicht. Punkt. Insofern muss ich meine vorher gemachte Behauptung
>berichtigen: "ausdruck" kann auch durchaus vom Typ "float" oder "double" 
>sein.
>
>Boolsche Ausdruecke gibt es aber inzwischen in C++ eben _doch_. Wenn der
>Compiler sie schon versteht, wird "ausdruck" in den Typ "bool" umgewandelt
>und dann geprueft, ob der Wert "true" oder "false" ist.

Und das gilt wohlgemerkt auch fuer Pointer, weshalb auch Pointer
in Ausdruecken stehen koennen.
Und mit der Definition eines "operator bool()" (oder in aelteren Compilern
eines "operator void*()") fuer eine Klasse
habe ich durch die implizite Umwandungen sogar die
Moeglichkeit, dass ein beliebiges Objekt in einer booleschen Bedingung
stehen kann.

Also:
   class Person {
     ...
     operator bool ();   // jetzt
     operator void* ();  // frueher
   };

   Person p;

   if (p) {
      ...
   }

Also kann in C++ in If- und While-Bedingungen eigentlich fast alles
stehen, wenn man entsprechende automatische Typ-Umwandlungen definiert.

-- 
Nico                             address: BREDEX GmbH, Nicolai Josuttis
email:   nico@bredex.de                   Fallersleber-Tor-Wall 23
phone:   +49 531 24330-0                  D-38100 Braunschweig
fax:     +49 531 24330-99                 Germany
Technical Details
Message-ID: <DHu8FE.D9E@bredex.de>
Path: arc1-ca.pugleaf.net!lumumba.braunschweig.pop.de!bredex!nico
References: <47au25$aom@rzsun02.rrz.uni-hamburg.de> <MSGID_242=3A4000=2F18_309ca0a9@Fido.DE> <47n7fl$aki@rzsun02.rrz.uni-hamburg.de>

Show Full Headers
Complete Article Headers
Newsgroups: de.comp.lang.c++
Path: arc1-ca.pugleaf.net!lumumba.braunschweig.pop.de!bredex!nico
From: nico@bredex.de (Nico Josuttis)
Subject: Re: Frage: illegal structur operation
Message-ID: <DHu8FE.D9E@bredex.de>
Reply-To: nico@bredex.de
Organization: Bredex GmbH
References: <47au25$aom@rzsun02.rrz.uni-hamburg.de> <MSGID_242=3A4000=2F18_309ca0a9@Fido.DE> <47n7fl$aki@rzsun02.rrz.uni-hamburg.de>
Date: Fri, 10 Nov 1995 17:26:01 GMT