#include <iostream>
using namespace std;
class Base
{
public:
virtual ~Base() {}
};
class Derived: public Base
{
int i;
public:
void funOne()
{
cout << "inside funOne()" << endl ;
}
void funTwo()
{
cout << "inside funTwo()" << i << endl ;
}
};
int main()
{
Base* bptr = new Base;
Derived* dptr = dynamic_cast<Derived*>(bptr);
cout << dptr << endl;
cout << bptr << endl;
dptr->funOne(); // why this works?
// dptr->funTwo(); // -> why this does NOT work? it throws exception
int temp;
cin >> temp;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgQmFzZQp7CglwdWJsaWM6CgkJdmlydHVhbCB+QmFzZSgpIHt9Cn07CgpjbGFzcyBEZXJpdmVkOiBwdWJsaWMgQmFzZQp7CgkJaW50IGk7CglwdWJsaWM6CgkJdm9pZCBmdW5PbmUoKQoJCXsKCQkJY291dCA8PCAiaW5zaWRlIGZ1bk9uZSgpIiAgPDwgZW5kbCA7CgkJfQoJCXZvaWQgZnVuVHdvKCkKCQl7CgkJCWNvdXQgPDwgImluc2lkZSBmdW5Ud28oKSIgPDwgaSA8PCBlbmRsIDsKCQl9Cn07CgppbnQgbWFpbigpCnsKCUJhc2UqIGJwdHIgPSBuZXcgQmFzZTsKCURlcml2ZWQqIGRwdHIgPSBkeW5hbWljX2Nhc3Q8RGVyaXZlZCo+KGJwdHIpOwoKCWNvdXQgPDwgZHB0ciA8PCBlbmRsOwoJY291dCA8PCBicHRyIDw8IGVuZGw7CgoJZHB0ci0+ZnVuT25lKCk7IC8vIHdoeSB0aGlzIHdvcmtzPwoJLy8gZHB0ci0+ZnVuVHdvKCk7IC8vIC0+IHdoeSB0aGlzIGRvZXMgTk9UIHdvcms/IGl0IHRocm93cyBleGNlcHRpb24KCglpbnQgdGVtcDsKCWNpbiA+PiB0ZW1wOwoKCXJldHVybiAwOwp9