statischer/dynamischer cast von Referenzen/Objekten

Ich war Herumspielen mit einer Reihe von casting-Operatoren eine Weile her, die ich anscheinend nicht wirklich an der Zeit. Ich war auf der Suche über mein code jetzt, und ich sah dies:

Base(Derived &p_derived) : m_state(static_cast<Base>(p_derived).m_state){}

Ich denke, nun habe ich ein besseres Verständnis für casting von Zeigern und Referenzen Dank einer sehr gute Antwort hier auf stackoverflow, aber jetzt gibt es Objekte beteiligt. Was genau passiert, wenn der Verweis gegossen, um ein Objekt? Oder was ist, wenn p_derived war das Objekt selbst und nicht nur ein Verweis? Würde Sie es schaffen werden, neue Objekte, und wenn ja, wie würde diese werden instanziert?

Ich bin auch überrascht, dass dies kompiliert werden, da in der Base.h, wo dieser code zu finden ist, Abgeleitet ist, nur vorwärts deklariert, was bedeutet, es sollte nicht wissen, dass es tatsächlich leitet sich von der Basis. Ich habe versucht, an einem anderen Ort zu tun, eine statische Umwandlung aus a Abgeleitet* nach Basis*, aber das würde zu Recht nicht kompilieren, wegen der Arten unvereinbar, soweit diese übersetzung Einheit betroffen war.

InformationsquelleAutor user1130005 | 2012-01-17

Schreibe einen Kommentar