![]() |
C++: Operatoren << und >>
Hallo;
habe mich gestern aus Zufall kurz mit cout und cin beschäftigen müssen. (sonst benutze ich immer printf und scanf) Was bedeuten dabei die Operatoren << und >>? Eigentlich ist es ja Bitweiser links- und rechtsshift. Aber in diesem Zusammenhang bedeutet es sicher was anderes. Was? Google hat mir nicht helfen können. |
Re: C++: Operatoren << und >>
Ich hatte mal so etwas ähnliches, und da bedeutete es: In die Standardausgabe schreiben (>>) und von der Standardeingabe lesen (<<). Quasi wie im DOS.
|
Re: C++: Operatoren << und >>
Eigentlich sind dies Bitweise Operatoren shl, shr. Aber sie wurden für die Stream-Klasse überladen und bedeuten das was Mathias gesagt hat.
|
Re: C++: Operatoren << und >>
Man kann Operatoren überladen?
:shock: Das ist ja megageil! :stupid: |
Re: C++: Operatoren << und >>
Moin!
Zitat:
MfG Muetze1 |
Re: C++: Operatoren << und >>
Meiner Meinung nach konnte man doch auch normale Operatoren überladen!
z.B. + bei Integern Berichtigt mich falls ich falsch liege. |
Re: C++: Operatoren << und >>
Moin!
Zitat:
MfG Muetze1 |
Re: C++: Operatoren << und >>
In C++ kann man für eine Klasse JEDEN Operator überladen, also:
+ - / * >> << % Kann sein, dass welche fehlen, ich kenn nicht alle, aber ich WEISS, dass man alle überladen kann. ;) |
Re: C++: Operatoren << und >>
Moin!
Zitat:
Also nicht Klasse + int sondern z.B. int = int + Zahl ?? MfG Muetze1 |
Re: C++: Operatoren << und >>
ja, in cpp kann man operatoren und anweisungen so überladen, wie man will, d.h. auch so, dass niemand mehr den quellcode vernünftig lesen kann. man kann auch klammern umdefinieren... wie man lustig ist
|
Re: C++: Operatoren << und >>
Und was nicht über die Sprache geht, macht man mit dem Präprozessor :roll:
Es gibt bestimmt einige Spaßvögel, die C-Präprozessor-Anweisungen geschrieben haben, mit deren Hilfe ein C-Compiler Pascal-Code compilieren kann :mrgreen: |
Re: C++: Operatoren << und >>
ja. wie ich hörte (keine garantie) arbeitet die NASA mit "begin" und "end" statt klammern aber trotzdem mit c
|
Re: C++: Operatoren << und >>
Zitat:
|
Re: C++: Operatoren << und >>
Zitat:
|
Re: C++: Operatoren << und >>
Es hindert dich eigentlich niemand daran, einen Präprozessor auch für Delphi zu benutzen. Dieser wird ja vor dem Compiler ausgeführt und muss folglich nicht von der Sprache/dem Compiler unterstützt werden. Wenn du nun deine IDE dazu bekommst, dass sie vor dem Compiler noch einen Präprozessor auf den Code loslässt, dann ergeben sich für dich keine Komfort-Einbußen.
Ich hab glaub ich auch mal was von Präprozessoren für ObjectPascal-Code gehört, kann aber auch sein, dass ich mich irre. |
Re: C++: Operatoren << und >>
So am Rande: Was genau macht ein Präprozessor? Ist der "nur" dazu da um Sprachelemente selbst umdefinieren zu können, wie z.B. Klammern in "begin" und "end"?
Wenn dem so wäre, könnte man doch auch einen PP selber schreiben - nur dass der halt extern auf das .pas-File losgelassen werden müsste, und dieses dann erneut geladen. (Okay, native Ünterstützung wäre da ganz sicher komfortabler :roll:) |
Re: C++: Operatoren << und >>
Ich kann dir nur das sagen, was ich über den Präprozessor in C(++) weiß:
- Du kannst Dateien mit #include einbinden (lol ^^) - Du kannst z.B. mit "#define a b" erreichen, dass jedes Vorkommen von a durch b ersetzt wird. Allerdings nicht in Strings, Kommentaren, Variablen- und Funktionsnamen, etc.... - Mit #pragma message("nachricht") gibt der compiler "nachricht" aus, wenn er diese Zeile kompiliert - Es gibt IF- und ELSE-Anweisungen - Es gibt in C (nicht aber in Delphi) vordefinierte Makros. Beispiele dafür sind __LINE__ (wird vor dem Compilieren durch die Zeilennummer ersetzt), __DATE__ (wird durch das compilierdatum ersetzt), __TIME__ (wird durch die compilierzeit ersetzt) und noch einige andere. |
Re: C++: Operatoren << und >>
Ganz allgemein gesprochen ist das ein Parser, der vor dem Compilieren auf das gesamte Quellcode-Dokument losgelassen wird. Der Compiler bearbeitet dann den Text, so wie ihn der Präprozessor zurückliefert.
Präprozessoren eignen sich also z.B. für Makros: Anstatt eine Funktion im Quellcode zu deklarieren und dort aufzurufen, lasse ich einen Funktionsaufruf im Code durch den Inhalt der Funktion selbst ersetzen. Dadurch bläht sich mein Quellcode evlt. etwas auf, aber ich gewinne an Performance, da ich keine Parameter an die Funktion übergeben muss und mir einen Sprung spare. |
Re: C++: Operatoren << und >>
Zitat:
Nur werden inline-Anweisungen nicht vom Präprozessor, sondern vom Compiler verarbeitet. |
Re: C++: Operatoren << und >>
:thuimb: Also wäre es in der Tat möglich einen eigenen PP zu basteln. Dann muss man die Delphi IDE nur noch dazu bewegen vor den eigentlichen Compilern noch den PP auszuführen. Ist so eine Option in Delphi irgendwo auf irgend eine Art vorgesehen/möglich/schummelbar? :)
Weil das Konzept reizt mich doch irgendwie... |
Re: C++: Operatoren << und >>
Na ja, im Notfall könnte man die dcc32.exe umbenennen und den Präprozessor so nennen. Der führt dann seinen Krams druch und reicht es dann inklsuive der angegebenen Parameter an den Original-Compiler weiter.
Ist aber keine saubere Lösung. |
Re: C++: Operatoren << und >>
Naja nu, aber immerhin eine Lösung ;)
Wie ist das dann aber im Debugging? Wird da auch dcc32 benutzt? Ich glaube an dieser Stelle könnte es noch einige Probleme geben... oder die Syntaxprüfung der IDE - an die wird man wohl auch net dran kommen... ach menno, man sollte sich nicht zu früh freuen. Und wenn es ginge, dann gäbe es das sicherlich auch schon. Aber sei's drum - ich kam bisher auch prächtig ohne aus, wäre nur ne nette Zugabe gewesen :) |
Re: C++: Operatoren << und >>
Das << bzw. shl ist eigendlich nur eine Multiplikation mit 2 und >> bzw. shr ein Division durch 2.
[edit] Oh sry, habe die Frage nicht richte gelesen. :wall: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz