C und patch

Josef 'Jupp' Schugt jupp at gmx.de
Don Nov 21 23:05:02 CET 2002


Hi!

* On 2002-11-21 20:54
* Christoph Kliemt <christoph.kliemt at entici.de> wrote:
> Einleuchtende Syntax... ok, dann machen wir das Fass mal auf.
> 
> Bsp C++
> 
> If ( A == B )
>         do_this();
> else
>         do_that();
> 
> Die Syntax leuchtet ein, nur lesbar ist das nicht. Dummerweise ist nämlich
> der operator == überladen. Ist A jetzt die gleiche Instanz, haben beide
> Objekte den gleichen Inhalt, oder sind sie im gleichen "Zustand", oder ...?

Ach du lieber Gott 8-O

> Lesbar wäre sowas wie zB
> If  ( A.sameInstanceAs( B ) )
>         do_this();
> else
>         do_that();

Abgesehen von der abweichenden Syntax dürftest du wohl

# Test ob die Objekte die gleiche Nummer tragen (das bedeutet mit
# einer einizigen Einschränkung(*), dass die Objekte identisch sind)
if a.equal?(b)
  do_this()
else
  do_that()
end

meinen. Gehört sowas nicht zum Sprachumfang von C++? Es gibt noch
zwei weitere Varianten:

# Test ob Werte identisch sind
if a == b
  do_this()
else
  do_that()
end

#Test ob Wert und Klassenzugehörigkeit identisch sind
if a.eql?(b)
  do_this()
else
  do_that()
end

Ich hoffe doch, dass zumindest diese beiden Möglichkeiten in C++
vorhanden sind, oder?

Kleines Beispiel:

| ruby <<EOF
| > a = 1.0
| > b = 1
| > puts a == b
| > puts a.eql?(b)
| > puts a.equal?(b)
| > b = 1.0
| > puts a == b
| > puts a.eql?(b)
| > puts a.equal?(b)
| > EOF
| true
| false
| false
| true
| true
| false

(*) Aus Gründen der Effizienz wird bei Fixnums (kleinen ganzen
Zahlen) der Zahlenwert mit der Nummer des Objekts gleichgesetzt.
Schon bei Bignums (großen ganzen Zahlen) ist das nicht mehr der Fall.

Josef 'Jupp' Schugt <jupp at gmx.de>                 http://jupp.tux.nu/
-- 
Meckenheimer Str. 66a, 53179 Bonn, DE/EU             +49 228 34 24 85
I was deeply shocked by learning that a Windows XP Pro Recovery CD at
39,- EUR is a pirated copy. Does this mean that my Linux distribution
which did cost less and has more features is a pirated copy as well?