Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

01.08.2009, 16:42

Frage zu einem Beispiel....

Hallo zusammen^^

Habe mir das Buch auch mal zugelegt und habe direkt mal eine Frage zum Thema "Operatoren".
Im Buch steht (Seite 54 glaube ich) folgendes Beispiel:

C-/C++-Quelltext

1
2
3
4
inline tbVector3 operator + (const tbVector3& a, const tbVector3& b)
{
return ... //Hab ich jetzt einfach mal ausgelassen...

}


Habe schon 2 Bücher über C++ gelesen, aber "operator +" hab ich noch nie gesehen...

Wäre nett wenn mir jemand diesen Syntax erklären könnte.

Mfg

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

2

01.08.2009, 16:58

Das ist eigentlich eine ganz normale Funktion, welche aber halt aufgerufen wird, wenn man den + Operator braucht, also wird diese Funktion z.B hier aufgerufen:

C-/C++-Quelltext

1
2
3
4
5
tbVector3 a,b,c;
// fülle b und c


a = b + c; //bedeutet soviel, wie

a = operator + ( a , b );

3

01.08.2009, 17:03

Achso^^

Also wenn ich normalerweise "a + b" rechne, wird a einfach zu b addiert oder halt andersherum....

Und wenn ich diese Funktion dann einbaue, werden a und b nicht mehr addiert, sondern machen das, was in der Funktion steht.

Ist etwas schlecht formuliert, sorry, aber stimmt das so ungefähr ?

Mfg.

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

4

01.08.2009, 17:11

Nein. Es gibt für Benutzerdefinierte Typen kein Standardverhalten. Wenn du da probierst die eine Instanz mit der anderen zu addieren, kriegst du den selbern Fehler, wie, wenn du eine Funktion aufrufen möchtest, die es nicht gibt.

Das heisst, dass du diese Funktion implementieren musst, wenn du deine Klassen addieren willst.

Die Implementierung des + - Operator wird meist tatsächlich anhand des += - Operators definiert.

in etwa so:

C-/C++-Quelltext

1
2
3
4
5
6
inline tbVector3 operator + (const tbVector3& a, const tbVector3& b)
{
tbVector3 temp = a;
a += b;
return temp;
}


Das aus dem Grund, dass ja das hier das selbe Ergebnis bringen sollte:

C-/C++-Quelltext

1
2
3
4
5
6
tbVector3 a,b,c,d;
// füllen

c = a + b;

d = a;
d += b; // d sollte das gleiche sein, wie c


Wenn man allerdings aus irgendwelchen Gründen die Implementierung anderst haben will/muss, dann kann man aber trotzdem beide Operatoren unabhängig definieren. (Auch wenn man dann schauen muss, dass es sich trotzdem logisch verhält)

5

01.08.2009, 19:48

Ah okay !
Vielen Dank !

Werbeanzeige