Ich schreibe seit fast zwanzig Jahren C- und C++-Code, aber es gibt einen Aspekt dieser Sprachen, den ich nie wirklich verstanden habe. Ich habe natürlich regelmäßige Casts verwendet, d.h.
MyClass *m = (MyClass *)ptr;
überall, aber es scheint zwei andere Arten von Gipsen zu geben, und ich kenne den Unterschied nicht. Was ist der Unterschied zwischen den folgenden Codezeilen?
MyClass *m = (MyClass *)ptr;
MyClass *m = static_cast<MyClass *>(ptr);
MyClass *m = dynamic_cast<MyClass *>(ptr);
78 Stimmen
Ich würde den Cast im alten C-Stil nicht als "regulären Cast" in C++ bezeichnen, da er alles andere als das ist. Man sollte ihn in C++ generell nicht verwenden, vor allem nicht bei Klassen, denn es ist einfach zu einfach, damit Fehler zu machen. Seine Verwendung ist ein Zeichen für einen C-Programmierer, der zu C++ gewechselt ist, aber C++ noch nicht ganz gelernt hat.
136 Stimmen
Wie kann eine Frage mit einer Antwort ein Duplikat einer Frage ohne Antwort sein? mehr noch, diese Frage wurde früher gestellt als das "Original"
7 Stimmen
@Vladp Für den Fall, dass Sie sich immer noch fragen, oder jemand anderes dies liest und sich fragt . (Außerdem war es kein Moderator, der die Seite geschlossen hat, sondern ein Benutzer mit einer dupe-hammer )
5 Stimmen
Zu Ihrer Information: Die verknüpfte Frage hat viel mehr Bewertungen und die Antworten haben auch viel mehr Bewertungen. Auch die verlinkte Frage hat einige gute nicht-theoretische Beispiele . (Außerdem wird in der verlinkten Frage nicht fälschlicherweise auf die Syntax des C-Typs als "regular cast" verwiesen).