Wenn man etwas über Polymorphismus lernt, sieht man normalerweise so etwas
class Base { int prv_member; virtual void fn(){} }
class Derived : Base { int more_data; virtual void fn(){} }
Was ist Upcasting oder Downcasting? Ist (Derived*)base_ptr;
ein Upcast oder Downcast?
Ich nenne es verärgert, weil Sie von der Basis weg in etwas Spezifischeres gehen. Andere Leute sagten mir, dass es ein Downcast ist, weil Sie eine Hierarchie in etwas Bestimmtes aufbauen, wobei die Spitze die Wurzel ist. Aber andere Leute scheinen es so zu nennen, wie ich es nenne.
Wenn ein Basis-PTR in einen abgeleiteten PTR konvertiert wird, spricht man von Upcasting oder Downcasting? und wenn jemand auf eine offizielle Quelle verlinken oder erklären kann, warum es so heißt, dann ist es großartig.
virtual
ist unnötig, "schadet" aber nicht. Können Sie erläutern, warum Sie der Meinung sind, dass es in diesem Zusammenhang überhaupt nicht verwendet werden sollte?Antworten:
Es ist niedergeschlagen: siehe Wikipedia- Artikel dazu.
quelle
In den meisten Sprachen werden (soweit ich weiß) Generalisierungen automatisch durchgeführt. Wenn Sie also in der Regel von einer Besetzung innerhalb einer Hierarchie sprechen, beziehen Sie sich auf eine spezialisierte Besetzung. Meiner Meinung nach bezeichnen die meisten Menschen mit dem Wunsch, die beiden Typen zu trennen, die spezialisierte Besetzung als niedergeschlagen, da sie die Vererbungshierarchie als einen Baum betrachten. Und in der Informatik ist die Wurzel oben abgebildet. Der Grund dafür ist entweder eine Konvention oder wahrscheinlich ein tief verwurzelter Hass auf Biologen unter Informatikern. (Alle Wortspiele vorgesehen.)
EDIT: Vielleicht ist es ein Top-Hass verwurzelt.
quelle
Stellen Sie sich die normale Art vor, einen Baum mit der "Basis" oben auf der Seite und den Blättern unten zu zeichnen. Wenn Sie Ihre Klassenhierarchie auf diese Weise darstellen, mit der Basisklasse oben und den Blättern irgendwo darunter, wird das Hoch- und Runterwerfen zu einem wörtlichen Vorgang. Besetzung und etwas, das die Seite von der Basis zu einem Blatt hinunterbewegt, ist eine Herabbesetzung.
quelle