downcast problem in c++ -
#include <iostream> using std::cout; using std::endl; class base { public : void f(); void g(); int mbasedata1; }; class derived : public base { public : int mderiveddata1; }; void main() { base* base = new base(); derived* derived = (derived*)(base); // downcast derived->mderiveddata1 = 6; cout<< derived->mderiveddata1<<endl; // result = 6; }
in code new base()
allocate memory in heap
and derived* derived = (derived*)(base)
cast base derived
how can use mderiveddata1? cant find allocate memory mderiveddata1 or when call constructor of derived allocate mderiveddata1 ?
the reason can't find memory mderiveddata1
allocated because no memory allocated. have performed invalid type-cast. thing stored in base
pointer base
instance. using type-cast tell compiler it's pointer derived
instance doesn't make (but compiler believe anyway because you're 1 in charge). object still base
. if want derived
, you'll need instantiate derived
. can use dynamic_cast
convert base
pointer derived
pointer.
base* base = new derived; derived* derived = dynamic_cast<derived*>(base); derived->mderiveddata1 = 6;
Comments
Post a Comment