here in code able point derived class pointer base class object , m able set , value of base class private member. if not giving issues need of virtual functions , whole confusion around run time polymorphism/late binding/vtable bla bla bal!!!
#include <iostream> using namespace std; class base { int a; public: base(int x=0):a(x){} void setvalueformember(int p) { a=p; } void showvalueofmember(){cout<<endl<<a<<endl;} }; class derived:public base { int b; public: derived(){} derived(int y):b(y){} void setvalueformember(int q) { b=q; } void showvalueofmember(){cout<<endl<<b<<endl;} }; int main() { derived d; d.setvalueformember(10); derived *dptr = new derived(); dptr = &d; dptr->showvalueofmember(); base b; dptr = (derived*)&b; dptr->setvalueformember(20); dptr->showvalueofmember(); return 0; }
virtual function used in case when , want access members of derived class using pointer of type, base class.
- when use
bptr=&d;
you won't able access members of derived class , except members inherited base class. if want access members of derived class using same pointer bptr, must have use virtual function,
- and @ time of compilation decided function going executed, that's why known
run-time polymorphism or dynamic binding
.
Comments
Post a Comment