Wednesday, November 27, 2013

Virtual Function in C++ Programming

                             If there are member function with same name in derived classes, virtual functions gives programmer capability to call member function of different class by a same function call depending upon different context. This feature in C++ programming is known as polymorphism which is one of the important feature of OOP.

Example
#include <stdio.h>
  using namespace std; 
   class B { 
       public: 
           void display() {
                  cout<<"Content of base class.\n"; 
               }
 }; 
class D : public B {

 public:   
 void display() {
      cout<<"Content of derived class.\n"; 
      }
 };
 int main() { 

B *b; 
D d;
 b->display(); 
b = &d; /* Address of object d in pointer variable */ 
b->display(); 
return 0; 
}

Output 
Content of base class. 
Content of base class. 



If you want to execute the member function of derived class then, you can declare display( ) in the base class virtual which makes that function existing in appearance only but, you can't call that function. In order to make a function virtual, you have to add keyword virtual in front of a function. 



* Example to demonstrate the working of virtual function in C++ programming. */

#include <iostream>
using namespace std;
class B
{
    public:
     virtual void display()      /* Virtual function */
         { cout<<"Content of base class.\n"; }
};

class D1 : public B
{
    public:
       void display()
         { cout<<"Content of first derived class.\n"; }
};

class D2 : public B
{
    public:
       void display()
         { cout<<"Content of second derived class.\n"; }
};

int main()
{
    B *b;
    D1 d1;
    D2 d2;

/* b->display();  // You cannot use this code here because the function of base class is virtual. */

    b = &d1;
    b->display();   /* calls display() of class derived D1 */
    b = &d2;           
    b->display();   /* calls display() of class derived D2 */
    return 0;
}
Output
-------------


Content of first derived class.
Content of second derived class.

No comments:

Post a Comment