Pointer und Funktionen
-
...
-
Swordfish schrieb:
Es ist ein sehr, sehr ähnlicher Holzhammer ...
Nein, hinter einem reinterpret_cast<> verbirgt sich NIE ein Funktionsaufruf.
Hinter einem C-Style-Cast sehr wohl.
-
...
-
#include <string> int main() { std::string s; (std::string) s; // OK static_cast<std::string>(s); // OK reinterpret_cast<std::string>(s); // Compilerfehler. }reinterpret_cast ist ziemlich beschränkt und kommt insofern einem C-Style-Cast beim besten Willen nicht gleich. Es ist allerdings richtig, dass die Funktionalität, die reinterpret_cast abdeckt, leicht versehentlich zu missbrauchen ist -- Casts zwischen unverwandten Typen werden möglich, Casts zwischen verwandten Typen müssen nicht immer gültige Ergebnisse liefern, und der Compiler muss es anstandslos schlucken, weil du ihm gerade mit der Cast-Keule auf den Kopf geschlagen und ihn angeschrien hast, dass du schon wüsstest, was du tust. Insofern ist eine gewisse Ähnlichkeit zu C-Casts vorhanden, auch wenn C- und Reinterpret-Casts mitunter unterschiedliche Ergebnisse liefern können, wenn beide im selben Kontext kompilierbar sind. (Ich denke da an Mehrfachvererbung.)
Übrigens kann ein reinterpret_cast durchaus Berechnungen auf dem Eingabewert veranlassen (das behält der Standard sich in 5.2.10 (3) ausdrücklich vor):
ISO/IEC 14882:2011 5.2.10 (3) schrieb:
3 [ Note: The mapping performed by reinterpret_cast might, or might not, produce a representation different from the original value. — end note ]
Ihr habt also beide Unrecht. :p
-
seldon schrieb:
[...] der Compiler muss es anstandslos schlucken, weil du ihm gerade mit der Cast-Keule auf den Kopf geschlagen und ihn angeschrien hast, dass du schon wüsstest, was du tust. [...]
Swordfish schrieb:
[...] Es ist ein sehr, sehr ähnlicher Holzhammer ...

-
morlix schrieb:
Ich wollte nicht die String Klasse verwenden, da ich später auch gerne bei anderen Projekten mitarbeiten würde und da werde ich eher C als C++ brauchen.
Dann solltest du lieber gleich C lernen. "Vernünftiges" C++ hat mit C nur noch sehr wenig zu tun.
-
morlix schrieb:
ich versuche gerade in meiner Freizeit ein wenig C/C++ zu lernen
Sowas gibt es nicht. Außer als Spottausdruck für das, was ein gewisser Autor verbricht.
morlix schrieb:
Zum lernen nutze ich "C++ von A bis Z von Jürgen Wolf" und das web.
Ebendieser. Du wurdest gewolft. Leider Pech gehabt. Das wieder loszuwerden, wird viel länger dauern, als es zu lernen.
-
Habe gerade C++ Der Programmierer und C++ Primer bestellt und werde versuchen alles von JW zu vergessen.
Was meinst du mit so etwas wie C/C++ in seiner Freizeit zu lernen gibt es nicht?
-
...
-
morlix schrieb:
Habe gerade C++ Der Programmierer und C++ Primer bestellt und werde versuchen alles von JW zu vergessen.
Was meinst du mit so etwas wie C/C++ in seiner Freizeit zu lernen gibt es nicht?
Es gibt keine Sprache namens C/C++. Sie haben sich inzwischen unglaublich weit entfernt. Dein C/C++-Code macht einem sofort Bauchweh und Kopfweh und dann, wenn man in der main() ist und alles überstanden zu haben meint, und das exit() sieht, da möchte man sterben.