Jan 17, 2009

base class pointer can point to object of derived class, while derived class pointer cannot point to object of base class.

base class pointer can point to object of derived class, while derived class pointer cannot point to object of base class.
dynamic_cast:
CBase b; CBase* pb;
CDerived d; CDerived* pd;
pb = dynamic_cast(&d);// ok: derived-to-base CBase* pb=&d
pd = dynamic_cast(&b);// wrong: base-to-derived CDerived* pd=&b

if base class is polymorphism(RTTI)
class CBase { virtual void dummy() {} };
class CDerived: public CBase { int a; };
CBase * pba = new CDerived;
CBase * pbb = new CBase;
CDerived * pd;
pd = dynamic_cast(pba); //pb!=0
pd = dynamic_cast(pbb);//pb==0

No comments:

Post a Comment