![]() |
![]() |
Operatoren überladen
|
G.Eichelsdörfer
Staatliche Technikerschule Weilburg |
Ziel dieser Übung ist es, einige hilfreiche Operatoren für die Klasse DoubleArray zur Verfügung zu haben. Sie sollen möglichst viele der im Folgenden beschriebenen Operatoren implementieren. Dabei üben Sie zugleich auch einige elementare Dinge wie das Erstellen von Funktionen, die Anwendung von Parametern, Zugriffe auf Datenfelder, codieren von Ablaufstrukturen und Verfahren umsetzen.
Erweitern Sie das bestehende Projekt doublearray im Arbeitsbereich klassen!
Erweitern Sie auch die main-Funktion zum Testen der überladenen Operatoren!
Hinweise:
Alle Operatoren, deren linker Operand von der Klasse DoubleArray ist, kann innerhalb der Klasse
DoubleArray überladen werden. Dann muss nur noch der rechte Operand als Parameter angegeben werden.
Beispiel: DoubleArray operator + (double x);
Dieser Operator kann somit auf die Daten des Objektes (linker Parameter) zugreifen.
Operatoren, deren linker Operand nicht von der Klasse DoubleArray ist, müssen außerhalb dieser Klasse
überladen werden. Damit der Operator auf die Daten des DoubleArray-Operanden zugreifen kann,
muss dessen Prototyp innerhalb der Klasse DoubleArray per friend
deklariert werden.
Beispiel: friend DoubleArray operator + (double a, const DoubleArray& b);
Selbstverständlich können auf diese Weise auch Operatoren für einen linken Operanden von der Klasse DoubleArray innerhalb der Klasse als friend deklariert und außerhalb der Klasse implementiert werden.
Beide Operatoren müssen vor einem DoubleArray-Operand stehen und die Referenz auf diesen Operanden als Resultat liefern.
Der Vorzeichenoperator + braucht nur formell zur Verfügung zu stehen, weil er nichts verändert.
Der Vorzeichenoperator - kehrt die Vorzeichen aller Elemente des DoubleArray-Datenfeldes um.
Mit diesem Operator werden einem existierenden DoubleArray-Objekt alle Eigenschaften und Werte
eines anderen DoubleArray-Objektes zugewiesen.
Dabei wird zumeist eine Reallokation von Heapspeicher erforderlich sein.
Reallokation: Belegten Speicher freigeben und Speicher neu allokieren
Linker Operand: DoubleArray-Objekt
Rechter Operand: DoubleArray-Objekt
Jeder dieser Operatoren soll eine kontextabhängige Funktion erfüllen. Jeder Operator muss als Resultat ein DoubleArray-Objekt liefern.
linker Operand | rechter Operand | Funktion |
---|---|---|
DoubleArray-Objekt | double-Ausdruck | Jedes Element des DoubleArray-Datenfeldes wird mit dem rechten Operanden verknüpft. |
double-Ausdruck | DoubleArray-Objekt | Jedes Element des DoubleArray-Datenfeldes wird mit dem linken Operanden verknüpft. |
DoubleArray-Objekt | DoubleArray-Objekt | Jeweils diejenigen Elemente werden paarweise miteinander verknüpft, die sich an den gleichen Stellen (Indizes) in beiden DoubleArray-Datenfeldern befinden. Die letzten Elemente des einen Datenfeldes, zu denen es keine Elemente im anderen Datenfeld gibt, werden nicht verarbeitet. |