Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   C++: Operatoren << und >> (https://www.delphipraxis.net/24015-c-operatoren-und.html)

Tubos 14. Jun 2004 07:33


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.

MathiasSimmack 14. Jun 2004 08:01

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.

neolithos 14. Jun 2004 08:56

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.

Tubos 14. Jun 2004 08:58

Re: C++: Operatoren << und >>
 
Man kann Operatoren überladen?
:shock:
Das ist ja megageil! :stupid:

Muetze1 14. Jun 2004 09:36

Re: C++: Operatoren << und >>
 
Moin!

Zitat:

Zitat von Tubos
Man kann Operatoren überladen?
:shock:
Das ist ja megageil! :stupid:

Nicht in dem Sinne. Du kannst dir aber eine eigene Klasse schreiben und auch Operatoren dafür schreiben, dann können die Anwender diese Operatoren nutzen bei deiner Klasse. Das Ding ist nämlich nicht das überladen, weil du kannst schlecht das >> für einen Integer neu definieren bzw. überladen. Und ein rechtsshift >> auf deine Klasse ist nicht definiert - du könntest es halt definieren in deiner Klasse - so ist es nicht vordefiniert.

MfG
Muetze1

neolithos 14. Jun 2004 12:01

Re: C++: Operatoren << und >>
 
Meiner Meinung nach konnte man doch auch normale Operatoren überladen!

z.B. + bei Integern

Berichtigt mich falls ich falsch liege.

Muetze1 14. Jun 2004 12:50

Re: C++: Operatoren << und >>
 
Moin!

Zitat:

Zitat von neolithos
Meiner Meinung nach konnte man doch auch normale Operatoren überladen!

z.B. + bei Integern

Berichtigt mich falls ich falsch liege.

Kenne ich nicht, aber ich kann nicht alles wissen, daher wäre es nett falls einer mal ein Beispiel dazu posten könnte. Würde mich in dem Zusammenhang dann auch mal interessieren.

MfG
Muetze1

Dax 14. Jun 2004 13:16

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. ;)

Muetze1 14. Jun 2004 14:02

Re: C++: Operatoren << und >>
 
Moin!

Zitat:

Zitat von Dax
In C++ kann man für eine Klasse JEDEN Operator überladen, ...

Ok, das habe ich auch schon gesagt. Uns geht es ja um die Sache einen Operator für eine nicht Klasse, nämlich am Beispiel des Typs int einen Operator zu überladen. Für eine Klasse war mir klar und hatte ich oben schon geschrieben, aber wie sieht es mit einem Typ aus bzw. einer "nicht-Klasse"?

Also nicht Klasse + int sondern z.B. int = int + Zahl ??

MfG
Muetze1

nailor 14. Jun 2004 15:20

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

Chewie 14. Jun 2004 16:54

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:

nailor 14. Jun 2004 17:10

Re: C++: Operatoren << und >>
 
ja. wie ich hörte (keine garantie) arbeitet die NASA mit "begin" und "end" statt klammern aber trotzdem mit c

Tubos 14. Jun 2004 18:29

Re: C++: Operatoren << und >>
 
Zitat:

Es gibt bestimmt einige Spaßvögel, die C-Präprozessor-Anweisungen geschrieben haben, mit deren Hilfe ein C-Compiler Pascal-Code compilieren kann
yeah, das ist ja ne geile idee!! :mrgreen:

w3seek 14. Jun 2004 19:00

Re: C++: Operatoren << und >>
 
Zitat:

Zitat von Chewie
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:

Hm waer toll wenn das ginge, allerdings so perfekt ist der preprocessor leider nicht (ginge hoechstens mit regular expressions, aber die kann er nicht). Allerdings waere ein preprocessor in delphi auch nicht schlecht, benutze macros eigentlich laufend und das misse ich in delphi schon sehr lange ;)

Chewie 14. Jun 2004 20:22

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.

dizzy 14. Jun 2004 20:36

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:)

Tubos 14. Jun 2004 21:13

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.

Chewie 14. Jun 2004 21:58

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.

Tubos 14. Jun 2004 22:07

Re: C++: Operatoren << und >>
 
Zitat:

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.
Das geht im Falle von C++ aber auch mit dem Schlüsselwort inline.
Nur werden inline-Anweisungen nicht vom Präprozessor, sondern vom Compiler verarbeitet.

dizzy 14. Jun 2004 22:11

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...

Chewie 14. Jun 2004 22:12

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.

dizzy 14. Jun 2004 22:38

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 :)

Quake 17. Jun 2004 14:47

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