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. |