🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Ueberladen ... Problem ... Dringend

#1204
From: Nico Josuttis
Date: Tue, 09 Jan 1996 13:12
117 lines
4166 bytes
In article <4cqs22$2ou@rztsun.tu-harburg.de>,
Marco Budde <semb2204@hp00.rz.tu-harburg.de> wrote:
>From: Marco_Budde@p15.f5200.n240.z2.fido.sub.org (Marco Budde)
>Newsgroups: fido.ger.c_plusplus
>Subject: Problem beim Ueberladen!
>Date: Thu, 04 Jan 1996 21:41:00 +0200
>Organization: Grundgesetz fuer Windows
>Message-ID: <MSGID_2=3A240=2F5200.15_c0199c7a@fidonet.org>
>
>Moin Moin!
>
>Ich habe da ein ziemlich grosses Problem. Mein Informatikprof. hatte  
>irgendwie das Verlangen, uns in einer Vorlesungsstunde die komplette C++  
>Programmierung zu zeigen ;-)! 
Irrsinn !!!!
Kannst Du mir mal Name und Adresse des Profs geben ???

>Jetzt sollen wir ein Programm abliefern,  
>dass massenhaft Operatoren ueberlaedt. Leider bekomme ich das absolut  
>nicht hin. Ich habe hier zwar ein C++ Buch von Schumann liegen, aber  
>irgendwie scheint der Autor selbst keinerlei Ahnung von C++ zu haben. Ich  
>hoffe mir kann hier jemand das Uberladen mal genauer erklaeren. Was mir  
>absolut nicht klar ist: muss ich fuer die Rueckgabe erst eine Kopie das  
>Objekts erzeugen oder wie greife ich auf dieses Objekt zu?
>Dieses Codefragment ist gegeben:
>
>class vektor
>{
  private:	// zur besseren Lesbarkeit
>  int *pointer;
>  int dimension;
>  public:
>    vektor (int anzahl_elemente);
dieser Konstruktor sollte besser mit explicit abgesichert werden, falls dein
Compiler das kann (ziemlich neues Sprachmittel)
>    ~vektor ();
>    vektor (vektor &u);
>    vektor &operator= (const vektor &v);
>    int &operator[] (int i);
>    vektor operator+ (const vektor &u);
>    int operator* (const vektor &u);
>};
>
>vektor::vektor (int anzahl_elemente)
>{
>  dimension = anzahl_elemente;
>  pointer = new int[anzahl_elemente];
>  if (pointer == NULL)
dieser Test ist eigentlich unnoetig, da normalerweise ein New-Handler
installiert ist, der das Programm abbricht.
>  {
>    cout << "Allokationsfehler" << endl;
besser cerr statt cout (Fehlerkanal!)
>    exit (EXIT_FAILURE);
>  }
>}
>
>Nun sollen die restlichen Funktionen realisiert werden (insbesondere den  
>Destruktor, die Vektoraddition und die Skalarmultiplikation). Den  
>Desktruktor habe ich ja noch hinbekommen, aber der Rest ...
>
>vektor::~vektor (void)
>{
>  delete pointer;
Leider FALSCH !!!
richtig:
   delete [] pointer
denn es ist ein Array
>}
>
>vektor& vektor::operator = (const vektor &v)
ich empfehle den Return-Wert als const zu deklarieren, aber das ist
Geschmackssache
>{
>  int i;
find ich in der Scheife schoener
>
hier sollte zunaechst getestet werden, ob das Objekt sich selbst
zugewiesen wird:
   if (this == &v)
      return *this;
>  for (i=0 ; i < v.dimension ; i++)
s.o.: for (int i=0; ...
>    pointer[i] = v.pointer[i];
>  return (*this);
>}
>
>Ich hoffe wirklich, dass ihr mir helfen koennt.
Da ist aber noch viel im argen !

Eine nicht gerade objektive Empfehlung waere es, mein Buch
"Objektorientiertes Programmieren in C++" von Addison-Wesley
zu lesen.
Dort steht (fast) alles didaktisch Schritt fuer Schritt eingefuehrt drin.
Und ich denke, dass ich Ahnung habe.
Ansonsten gibt es genug Buecher von anderen Leuten, die wohl auch Ahnung
haben.

Als kleiner Hinweis an Deinen Prof:
Wer C kann sollte fuer C++ mindestens nochmal genausoviel Zeit
investieren.

Und noch ein Hinweis: Die Klasse vector ist eine Klasse, die
in der Standard-Bibliothek, die gerade fertiggestellt wird, drin ist.

>
>cu, Marco
>
>Mailbox: mbudde@hqsys.shnet.org    Uni: Budde@tu-harburg.d400.de
>


-- 
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: <DKx0o4.Aoo@bredex.de>
Path: arc1-ca.pugleaf.net!news.braunschweig.pop.de!bredex!nico
References: <4cqs22$2ou@rztsun.tu-harburg.de>

Show Full Headers
Complete Article Headers
Newsgroups: de.comp.lang.c++
Path: arc1-ca.pugleaf.net!news.braunschweig.pop.de!bredex!nico
From: nico@bredex.de (Nico Josuttis)
Subject: Re: Ueberladen ... Problem ... Dringend
Message-ID: <DKx0o4.Aoo@bredex.de>
Reply-To: nico@bredex.de
Organization: Bredex GmbH
References: <4cqs22$2ou@rztsun.tu-harburg.de>
Date: Tue, 9 Jan 1996 13:12:03 GMT