Hewlett Packard Interview Question
Software Engineer / DevelopersPure Virtual functions
A pure virtual function has no function body.
It is declared as: virtual void display()=0;
It should then be redefined in the derived class(es).
class Base
{
public:
virtual void display()=0;
};
class Derived1:public Base
{
public:
void display()
{
cout<<"\n Derived1";
}
};
class Derived2:public Base
{
public:
void display()
{
cout<<"\n Derived2 ";
}
};
int main()
{
Base *d1,*d2;
d1= new Derived1();
d2= new Derived2();
d1->display();// Invokes Derived1::display()
d2->display();// Invokes Derived2::display()
return 0;
}
Virtual Functions
- Anu December 07, 2010When a function is declared virtual in the base class, it should be redefined in the derived class. The choice of which function to be invoked is decided only at runtime, which is known as dynamic binding.
eg:
class Base
{
public:
virtual void display()
{
cout<<"\n Base ";
}
};
class Derived:public Base
{
public:
void display()
{
cout<<"\n Derived ";
}
}
int main()
{
Base *b,*d;
b=&Base;
d=&Derived;
b->display();// Invoke the display() in Base
d->display();// Invoke the display() in Derived
}