enum - wer hat Recht? Compiler oder Buch ;)
-
Der Autor ist der Meinung das ein Destruktor die Überladung des Bit-Komplement-Operators darstellt - ich wunder mich gerade warum das Buch schon in der 6. Auflage erschienen ist - bei uns wurde es sogar in der C++ Vorlesung empfohlen...
-
LOL!
-
das geilste was ich bisher im Buch gesehen habe:
#include <iostream> using namespace std; template<int N> class Fakultaet { public: enum{value = N*Fakultaet<N-1>::value}; }; template<> class Fakultaet<0> { public: enum{value = 1}; }; int main() { const int x = Fakultaet<6>::value; cout << x <<endl; cin.get(); return 0; }
-
Vertexwahn schrieb:
das geilste was ich bisher im Buch gesehen habe:
#include <iostream> using namespace std; template<int N> class Fakultaet { public: enum{value = N*Fakultaet<N-1>::value}; }; template<> class Fakultaet<0> { public: enum{value = 1}; }; int main() { const int x = Fakultaet<6>::value; cout << x <<endl; cin.get(); return 0; }wo ist daran das problem?
könnte breymann sein, der sich an metaprogrammierung wagt, obwohl das buch für anfänger ist.
-
Was der Bauer nicht kennt, das frisst er net :p
-
Vertexwahn schrieb:
Der Autor ist der Meinung das ein Destruktor die Überladung des Bit-Komplement-Operators darstellt
Kannst du mal das exakte Zitat angeben? Wenn er nämlich von Überladung des ~-Zeichens sprechen sollte, hätte er recht.
-
Ü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
-
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.