Article View: de.comp.lang.c++
Article #961Re: [Q]Operator/Construktor
From: Dietmar Kuehl
Date: Wed, 06 Dec 1995 16:11
Date: Wed, 06 Dec 1995 16:11
33 lines
1866 bytes
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!kuehlReferences:
<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