003
21.08.2006, 13:19 Uhr
stephanw
localhorst
|
Wenn beide im Prinzip das Gleiche tun, sollte man nur eine Funktion dafür haben. Falls sie verschiedene Dinge tun, sollte man seinen Entwuf ändern ;-)
Ich handhabe es so: ein Operator, der ein Objekt ändert (z.B. "+=") ist ein Member. Einer, der wie "+" zwei konstante Objekte nimmt und ein neues erzeugt, ist dann global bzw. außerhalb der Klasse, aber im gleichen Namespace.
Vielleicht könnte Dein Entwurf noch etwas modifiziert werden, indem der operator+(const Foo&, const Foo& auch ein Foo zurückgibt. Um aus einem Foo ein int zu machen, kannst Du einen (Member-) operator int() anbieten oder eine (Member-) Funktion toInt(). Ist Geschmacksache, ich finde es logischer, wenn bei einer Addition der gleiche Typ rauskommt (vorrausgesetzt, das Modell gibt das her, das wäre z.B. beim Skalar-Produkt zweier Vektoren natürlich nicht so). -- Reden ist Schweigen und Silber ist Gold. Dieser Post wurde am 21.08.2006 um 13:21 Uhr von stephanw editiert. |