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

Errschaffer

Alter Hase

  • »Errschaffer« ist der Autor dieses Themas

Beiträge: 865

Wohnort: Frankfurt

  • Private Nachricht senden

1

08.10.2008, 12:34

Punktoperator

Hallo,
bis zum Kapitel Vererbung wurde ja immer der Punktoperator verwendet um auf eine Instanz zuzugreifen. (z.b Run.Game)

Nur wird bei Listning 7.9.2 das ganze so geschrieben
Schiff->Starten ();

Ist das jetzt beides das selbe oder wo ist da der unterschied?

2

08.10.2008, 12:39

Den Pfeil (->) schreibt man üblicherweise bei Zeigern. Den Punkt bei normalen Instanzen.

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

3

08.10.2008, 12:40

Das ist ein anderer Operator.. Er wird nativ äquivalent zum . Operator benutzt, wenn du über einen Zeiger auf das Objekt zugreifen willst.
Allerdings kannst du den -> Operator überladen, was mit dem . - Operator nicht geht. (Siehe Smartpointer)

4

08.10.2008, 12:42

genau genommen könnte man den Pfeil auch so ausdrücken:
(*Schiff).Starten();
dabei wird zuerst der Zeiger(!) Schiff dereferenziert, sodass man die eigentliche Klasseninstanz hat, auf die man den Punktoperator anwenden kann. Der Pfeil greift im gegensatz dazu direkt über einen Zeiger auf die Klasseninstanz zu.

5

08.10.2008, 14:41

Nja aber der operator-> kann, wie von drakon schon gesagt, überladen sein, und dann ist:

C-/C++-Quelltext

1
(*ptr).foo(); /* != */ ptr->foo();
wobei dann ptr falsch wäre weils kein zeiger wäre :D
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

6

08.10.2008, 14:51

Zitat von »"Deviloper"«

Nja aber der operator-> kann, wie von drakon schon gesagt, überladen sein, und dann ist:

C-/C++-Quelltext

1
(*ptr).foo(); /* != */ ptr->foo();
wobei dann ptr falsch wäre weils kein zeiger wäre :D

meinetwegen...wobei dann je nachdem auch der * operator überladen ist, womits dann wieder funktioniert :D

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

7

08.10.2008, 14:52

Zitat von »"Deviloper"«

wobei dann ptr falsch wäre weils kein zeiger wäre :D


Nur wenn der * Operator nicht überladen wurde.

Edit: :)
@D13_Dreinig

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

8

08.10.2008, 14:54

Zitat von »"David_pb"«

Zitat von »"Deviloper"«

wobei dann ptr falsch wäre weils kein zeiger wäre :D


Nur wenn der * Operator nicht überladen wurde.

Edit: :)


Und wenn wir schon dabei sind. Den & - Operator kann man auch noch überladen. :)

9

08.10.2008, 15:04

welchen operator (außer .) kann man denn nicht überladen?

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

10

08.10.2008, 15:09

Zitat von »"PCShadow"«

welchen operator (außer .) kann man denn nicht überladen?


.*, ::, ?:, # und ##
@D13_Dreinig

Werbeanzeige