Hallo
Folgender Code brachte mich dazu mal etwas genauer über Verebgung und Zeiger auf Basis- und abgeleitete Objekte nachzudenken:
spElemTemp = (MSXML2::IXMLDOMElementPtr) spNodeTemp;
Meine Interpretation, Gedanken und ein paar Fragen dazu, bitte korrigiert mich, wo ich falsch liege:
Hier wir scheinbar ein Zeiger einer Basisklasse einem Zeiger auf eine abgeleitete Klasse zugewiesen. Per Definition sollte das nicht gehen, deshalb braucht es hier auch einen Cast.
Umgekehrt ist das ja auch ohne Cast zulässig, wieso?
Nach purer "Bauernlogik" passt doch etwas kleines in etwas grosses, nicht aber etwas grosses in etwas kleines... dieser Gedanke scheint aber falsch zu sein.
Was ist ein Zeiger überhaupt genau?
Ein Zeiger zeigt auf einen Speicherbereich, hat aber auch einen Typ, demzufolge zeigt er von Punkt a bis Punkt b im Speicher (je nach Typgrösse). Richtig?
Wenn man das so sieht, würde aber die "Bauernlogik" zutreffen und beim Beispiel oben wäre kein Cast nötig... naütrlich mit dem unschönen Nebeneffekt, dass spElemTemp kein Vollwertiges Elementobjekt ist.
Ist es das hier überhaupt?
Viele Fragen :D. Wäre dankbar, wenn jemand etwas Licht ins Dunkle bringen könnte.