enum - wer hat Recht? Compiler oder Buch ;)
-
Vertexwahn schrieb:
Überladung des ~-Zeichens sprechen sollte, hätte er recht.
tut er aber nicht - zu faul jetzt zu zitieren - er schreibt ausdrücklich der ~Operator wird überladen

-
wo ist daran das problem?
nirgends, bis auf das fehlende template<>, das ich ergänzt habe und der zu kurz geratenen Erklärung
-
Vertexwahn schrieb:
er schreibt ausdrücklich der ~Operator wird überladen
Und dein Problem damit ist genau was? Ist doch vollkommen iO.
-
#include <iostream> using namespace std; class A { public: ~A() { cout<<"ich bin die Ueberladung des ~-Zeichens"<<endl; } void operator~() { cout<<"ich bin der ueberladene ~-Operator"<<endl; } }; int main() { { A objekt; ~objekt; } cin.get(); }
-
Das Beispiel steht so im Buch und der Autor spricht in diesem Zusammenhang von der Überladung des ~ Operators?
-
Das Beispiel steht nicht im Buch - der Autor spricht von der Überladung des ~ Operators - nicht von der Überladung des ~-Zeichens, aber das ist jetzt nur unsinnige Haarspalterei
-
Vertexwahn schrieb:
Das Beispiel steht nicht im Buch - der Autor spricht von der Überladung des ~ Operators - nicht von der Überladung des ~-Zeichens, aber das ist jetzt nur unsinnige Haarspalterei
Nein. Der Autor hat vollkommen Recht. ~ ist ein Operator, genauer gesagt ein unärer Operator. Siehe dazu ISO/IEC 14882:2003(E) - 5.3.1 Unary operators.
-
~ ist ein Operator, genauer gesagt ein unärer Operator.
das bestreitet auch niemand

-
Nunja, es kam aber so rüber, dass dich das stören würde.
Vertexwahn schrieb:
der Autor spricht von der Überladung des ~ Operators - nicht von der Überladung des ~-Zeichens
-
Wenn ich den ~-Operator überladen will dann mache ich folgendes:
operator~()Ein Destruktor stellt keine Überladung des ~-Operators, sondern nur eine Überladung des ~-Zeichens dar
-
Vertexwahn schrieb:
Ein Destruktor stellt keine Überladung des ~-Operators, sondern nur eine Überladung des ~-Zeichens dar
Ein dtor stellt überhaupt keine Überladung dar. Weder des ~ Operators noch des ~ Zeichens.

-
Das kommt darauf an, ob man die Überladung als Konzept oder aus Sicht der Programmiersprache sieht - aber immerhin hast du eingesehen, dass ein Destruktor keine Überladung des ~-operators darstellt
-
Ich sollte wohl nochmal was dazu sagen. Überladen heißt allgemein, dass ein Symbol in unterschiedlichen Kontexten verschiedene Bedeutungen hat, so wie das ~ mal den Destruktor anzeigt und mal den Bitkomplementoperator darstellt.
-
Bashar schrieb:
Überladen heißt allgemein, dass ein Symbol in unterschiedlichen Kontexten verschiedene Bedeutungen hat
komisch, ich kenne überladen nur im zusammenhang mit funktionsnamen. du würdest also sagen, das symbol "stuhl" ist überladen, weil es die unterschiedlichen begriffe sitzmöbelstuhl und kackestuhl bedeutet? kannst du mir textbeispiele zeigen, wo das wort "überladung" so allgemein gebraucht wird? ich hab's nämlich noch nie gehört, daß man einzelne eichen, die teil eines namens sind, überladen nennt, nur weil sie in verschiedenen namen vorkommen.
wenn du sagst
~Klasse()
und
operator~()
würde ~ überladen, dann sage ich mit gleicher berechrigung
Volkard
und
Vogelsberg
würde das V überladen.
ich hoffe, du mißtraust meiner V-überladung. ich sehe keinen untersachied zu deiner ~-überladung.
-
komisch, ich kenne überladen nur im zusammenhang mit funktionsnamen
siehe erklärung von Bashar - ich meine das gleiche
ansonsten kann ich mich nur noch mal wiederholen:
Wenn ich den ~-Operator überladen will dann mache ich folgendes:
operator~()Ein Destruktor stellt keine Überladung des ~-Operators, sondern nur eine Überladung des ~-Zeichens dar
-
volkard schrieb:
komisch, ich kenne überladen nur im zusammenhang mit funktionsnamen. du würdest also sagen, das symbol "stuhl" ist überladen, weil es die unterschiedlichen begriffe sitzmöbelstuhl und kackestuhl bedeutet? kannst du mir textbeispiele zeigen, wo das wort "überladung" so allgemein gebraucht wird?
Nicht direkt, und auch nicht auf deutsch. Ein paar Sachen, die ich so gelesen habe: das static-Keyword sei überladen mit vier verschiedenen Bedeutungen; die Klammern sind in C überladen, weil sie auch für den Cast-Operator benutzt werden; die arithmetischen Operatoren sind in C überladen, weil sie je nach Typ eine andere Semantik haben. Das hat alles nichts mit Überladen als Feature einer Sprache zu tun. Ich gebe zu, dass das ein bisschen vage ist, und ich würde das auch nicht als normalen Sprachgebrauch bezeichen. Nur dass es nicht völlig plem-plem ist, zu behaupten, das ~ sei überladen.
BTW@Vertexwahn, der Destruktor ist nicht die Überladung! Die Überladung ist der Zustand, dass das Zeichen in mehreren Bedeutungen vorkommt.
-
Vertexwahn, der Destruktor ist nicht die Überladung! Die Überladung ist der Zustand, dass das Zeichen in mehreren Bedeutungen vorkommt.
das war mit
myself schrieb:
Ein Destruktor stellt keine Überladung des ~-Operators, sondern nur eine Überladung des ~-Zeichens da
gemeint - habs halt nicht so schön formulieren können

-
Vertexwahn schrieb:
Das kommt darauf an, ob man die Überladung als Konzept oder aus Sicht der Programmiersprache sieht - aber immerhin hast du eingesehen, dass ein Destruktor keine Überladung des ~-operators darstellt
Wieso eingesehen? Ich habe nie etwas dergleichen gesagt. Du hingegen glaubst, der Autor hätte das behauptet, aber bisher keine Beweise dafür gebracht. Vielleicht solltest du das nächste mal besser lesen, bevor du dich darüber lustig machst.

Vertexwahn schrieb:
das war mit
myself schrieb:
Ein Destruktor stellt keine Überladung des ~-Operators, sondern nur eine Überladung des ~-Zeichens da
gemeint - habs halt nicht so schön formulieren können

Dann schreib es das nächste Mal nicht so zweideutig. ZB hättest du "weitere Verwendung" statt dem Wort Überladung nehmen können. Ein dtor steht jedenfalls in keiner Beziehung zu einer Überladung, auch nicht vom ~ Zeichen. Was Überladung in C++ bedeutet, kannst du im Standard nachlesen.
Kapitel 13
-
Wieso eingesehen?
Darum:
groovemaster schrieb:
Vertexwahn schrieb:
Das Beispiel steht nicht im Buch - der Autor spricht von der Überladung des ~ Operators - nicht von der Überladung des ~-Zeichens, aber das ist jetzt nur unsinnige Haarspalterei
Nein. Der Autor hat vollkommen Recht. ~ ist ein Operator, genauer gesagt ein unärer Operator. Siehe dazu ISO/IEC 14882:2003(E) - 5.3.1 Unary operators.
Ich hab verstanden, dass du der Meinung bist, dass der Destruktor die Überladung des ~-Operators darstellt, was unsinn ist
Du hingegen glaubst, der Autor hätte das behauptet, aber bisher keine Beweise dafür gebracht.
Heute Abend tippe ich mal die Stelle ab

-
Aus Buch:
S. 239
"Das vom Konstruktor dynamisch erzeugte Array soll bei Programmende aus dem Speicher gelöscht werden. Dies macht eine Elementmethoder [<-steht so im buch ;)], die als Destruktor, bezeichnet wird; er ist das Gegenstück zum Konstruktor. Er wird gekennzeichnet durch den überladenen Bit-Negationsoperator und das Schlüsselwort delete."hier gefällt mir das "überadenen Bit-Negationsoperator" nicht
S. 241
"Ein Destruktor hat die Form
~Typ()
wobei hier der Bit-Negationsoperator (auch Bit-Komplement-Operator genannt) überladen wird"hier gefällt mir "überladen wird" nicht...