🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: [Q]Operator/Construktor

#961
From: Dietmar Kuehl
Date: Wed, 06 Dec 1995 16:11
33 lines
1866 bytes
Hi,
Saggau Henning (saggauh@uni-marburg.de) wrote:
: ich habe eine mathematische Klasse geschrieben, die ich mit einem
: Construktor, der das Nullelement erzeugt, und den Standardoperatoren (+-*/)
: ausgestattet habe. Nun meine Frage:

: a= -b;
: wobei a, b beide vom Typ dieser Klasse sind. Was wird gemacht?

Dieses Statement ist aequivalent zu einem der folgenden Statements:

1. a.operator=(operator-(b));
2. a.operator=(b.operator-());
3. a.operator=(-(b.operator T()));

Von 1. und 2. kann nur eins moeglich sein, da sonst der Ausdruck nicht
eindeutig waere. In 3. ist 'T' ein built-in Typ ist, zu dem es eine
Konversion von der entspreachenden "mathematischen Klasse" (sagen wir
mal 'M') gibt und es einen entsprechenden Zuweisungsoperator von 'T'
gibt. D.h. die beiden folgenden Funktionen muessen definiert sein:

  M::operator T() oder M::operator T() const
  M::operator= (T &) doer M::operator= (T const &)

: Wird erst das Nullelement erzeugt und dann b davon abgezogen?

Nein. Der Compiler hat kein semantisches Wissen darueber das es einen
Konstruktor gibt, der ein Nullelement erzeugt. Der Compiler versucht
einfach, das unaere '-' anzuwenden.
--
dietmar.kuehl@uni-konstanz.de
http://www.informatik.uni-konstanz.de/~kuehl
I am a realistic optimist - that's why I appear to be slightly pessimistic
Technical Details
Message-ID: <30c5c099.0@minerva.rz.uni-konstanz.de>
Path: arc1-ca.pugleaf.net!minerva.rz.uni-konstanz.de!uzwil!kuehl
References: <Pine.A32.3.91.951206090811.19821A-100000@papin.HRZ.Uni-Marburg.DE>

Show Full Headers
Complete Article Headers
From: kuehl@uzwil.informatik.uni-konstanz.de (Dietmar Kuehl)
Subject: Re: [Q]Operator/Construktor
Newsgroups: de.comp.lang.c++
References: <Pine.A32.3.91.951206090811.19821A-100000@papin.HRZ.Uni-Marburg.DE>
Organization: Fakultät für Mathematik und Informatik
Reply-To: dietmar.kuehl@uni-konstanz.de
X-Newsreader: TIN [version 1.2 PL2]
NNTP-Posting-Host: minerva.rz.uni-konstanz.de
Message-ID: <30c5c099.0@minerva.rz.uni-konstanz.de>
Date: 6 Dec 95 16:11:05 GMT
Path: arc1-ca.pugleaf.net!minerva.rz.uni-konstanz.de!uzwil!kuehl