Virtual functions - base class pointer

Posted by user980411 on Stack Overflow See other posts from Stack Overflow or by user980411
Published on 2012-03-23T05:23:29Z Indexed on 2012/03/23 5:29 UTC
Read the original article Hit count: 113

Filed under:
|
|
|

I understood why a base class pointer is made to point to a derived class object. But, I fail to understand why we need to assign to it, a base class object, when it is a base class object by itself.

Can anyone please explain that?

#include <iostream>
using namespace std;
class base {
     public:
        virtual void vfunc() {
            cout << "This is base's vfunc().\n";
         }
};
 class derived1 : public base {
      public:
            void vfunc() {
                 cout << "This is derived1's vfunc().\n";
    }
};
int main()
{
     base *p, b;
     derived1 d1;
     // point to base
     p = &b;
     p->vfunc(); // access base's vfunc()
     // point to derived1
     p = &d1;
     p->vfunc(); // access derived1's vfunc()
     return 0;
}

© Stack Overflow or respective owner

Related posts about c++

Related posts about class