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

05.11.2012, 18:09

Zugriffsoperatoren

Hallo Forum,
Ich mache gerade meine ersten Gehversuche in C++ und habe die ganzen Zugriffsoperatoren (Oder wie auch immer man das nennt ;)) glaub ich noch nicht ganz verstanden.

Also "." Greift auf einen Member in von einem Objekt zu während "->" das gleiche mit Pointern macht.
Also (*Variable).blabla ist Variable -> blabla ,oder?

Und :: bindet einen Member (Funktionen usw.) an seine Klasse?

Aber was macht "<<"? Im Buch steht was von einem "Umleitungsoperator".
Ich kenne aber nichts vergleichbares aus anderen Programmiersprachen und kann mir auch sonst nicht wirklich was unter einer Umleitung vorstellen. :S

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

2

05.11.2012, 18:23

Schon mit cout und cin gearbeitet? Falls ja, dass sind streams und es gibt noch andere stream-Klassen wie fstream, ofstream,stringstream und sie alle haben gemeinsam, dass man mit ihnen wunderbar leicht Ein- und Ausgaben durchführen kann. Beispiel:

C-/C++-Quelltext

1
2
3
int zahl = 12;
const char* string = "hiho";
stream << "hallo. gleich kommt eine zahl: " << zahl << ". Oder hier ist ein string: " << string << ". Es gibgt aber auch viele manipulatoren wie der folgende, den man nicht sieht, aber den stream ansich ändern kann. " << std::endl;

Das ist ein Beispiel für einen output stream. Das ganze geht auch mit >> als input. Dann kann man z.b. aus einer Datei oder Eingabe einen Wert in eine Variable einlesen.

P.S: und natürlich kann man << und >> für jede Klasse überladen. So kann man z.b. seine eigene Loggerklasse realisieren oder aber eine serializer (Klasse die Variablen z.b. in binärerweise als komplettes paket zusammenpackt).
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Atze12321

Frischling

Beiträge: 15

Wohnort: Jena

Beruf: Schüler...

  • Private Nachricht senden

3

05.11.2012, 19:23

Zu erwähnen wäre vielleicht noch, dass die Operatoren >> und << ursprünglich für Bitshifting gedacht war, sodass dort eine gewisse Zweideutigkeit herrscht.

Lg
max
8)

4

05.11.2012, 19:58

Also ist << und >> eigentlich eine eine Art Funktion... :D
Und der :: Operator greift auf endl zu... Warum nicht "."? Schließlich ist endl ja ein Member von std, oder?

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

5

05.11.2012, 20:04

Weil std keine Instanz einer Klasse oder ein Struct ist.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

6

05.11.2012, 21:37

Ah. OK. Ziemlich umständlich für jede Unterschiedlichen Typ einen eigenen Zugriffsoperator zu erstellen :S
(Aber ich will mich nicht beschweren ^^ )

Legend

Alter Hase

Beiträge: 731

Beruf: Softwareentwickler

  • Private Nachricht senden

7

05.11.2012, 21:41

Wenn du zu dem Thema "Operator Overloading" kommen wirst, wird das ganze mit den Operatoren bei cin und cout mehr Sinn ergeben. ;)
"Wir müssen uns auf unsere Kernkompetenzen konzentrieren!" - "Juhu, wir machen eine Farm auf!"

Netzwerkbibliothek von mir, C#, LGPL: https://sourceforge.net/projects/statetransmitt/

Werbeanzeige