Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Operatoren!!!

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 <
010
23.06.2003, 23:35 Uhr
ao

(Operator)


@Anfänger00:
Nein, private-Elemente sind private, damit sie nicht von außen direkt setzbar und lesbar sind, und man gezwungen ist, den Weg zu gehen, den der Programmierer der Klasse sich ausgedacht hat.

Und Operatoren werden dort sinnvoll eingesetzt, wo die Anschauung an einen Operator denken läßt. Zum Beispiel wird in String-Klassen oft der Operator + (und + benutzt, um zwei Strings aneinander zu hängen. Oder in einer Klasse für komplexe Zahlen könnte man die arithmetischen Operatoren (+ - * /) überladen, um die Grundrechenarten mit komplexen Zahlen zu programmieren.

Sehr viele Klassen überladen den Operator = für eine Wertzuweisung von einem Quellobjekt desselben Typs oder eines verwandten Typs.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
24.06.2003, 00:36 Uhr
Pablo
Supertux
(Operator)


Genau wie @ao sagte, sinvolle Operatoren sind Operatoren, mit denen man arithmetischen Operationen durchführen kann, ohne primitiven Datentypen sondern Klassen, bsp: eine Klasse die ein Bruch a/b darsetellt. Du kannst dann eine Addition definieren, Multiplikation definieren, aber du musst sie rchtig einsetzen. Die meisten Operatoren die überladen werden sind +, -, *, /, ==, !=, =, <, >, <<, >>, usw.
Der Operator = ist sehr wichtig, wenn man zum Beispiel eine Klasse hat, die eine öffentliche Variable hat, die einen Pointer ist (bsp: char* name). Wenn du ein Objekt1 per Zuweisung mit Objekt2 initialisierst, dann zeigen alle Pointers von obj1 auf die Adresse die obj2 Pointers zeigen. Also muss man den Operator = überschreiben.

@Heiko: Ein gues Besipiel mit pkw1 * pkw2, aber man kann nicht immer die Relation * betrachten als die übliche Multiplikation auf \mathbb{R} (für die die LaTeX kennen). Stell dir vor, ich mache eine Klasse vector (nicht mit Template vector von STL verwechseln) \in\mathbb{R}^n. Da ist es sinnvoll, dass ich ein Kreuzprodukt defieniere, und obwohl es mathematisch nicht ganz korrekt ist, kann ich ihn definieren mit * := Relation \mathbb{R}^n\times\mathbb{R}^n \rightarrow \mathbb{R} (auf deutsch R^n x R^n ----> R^n ). Also könnte ich theoretisch pkw1 und pkw2 als beliebige Vektoren-Objekte betrachten und dann wäre pkw1 * pwk2 sinwoll und wohldefiniert.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 24.06.2003 um 00:40 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: