PLOYMORPHISM


                     PREVIOUS                                                                                                          NEXT

C++ polymorphism means that a call to a member function will cause a different function to be executed depending on the type of object that invokes the function.

Example :-Consider the following where a base class has been derived by other two classes:

#include < iostream.h > 
using namespace std; 
class Shape 
{
   protected:
      int width, height; 
   public: 
      Shape( int a=0, int b=0) 
      { 
         width = a; 
         height = b; 
      } 
      int area()
      { 
         cout << "Parent class area :" << endl; 
         return 0; 
      } 
};
class Rectangle: public Shape 
{
   public: 
      Rectangle( int a=0, int b=0) 
      { 
        Shape(a, b);  
      } 
      int area () 
      {  
         cout<< "Rectangle class area :" << endl; 
         return (width * height);  
      } 
}; 
class Triangle: public Shape 
{
   public: 
      Triangle( int a=0, int b=0) 
      { 
        Shape(a, b); 
      } 
      int area ()
      {  
         cout << "Rectangle class area :" << endl; 
         return (width * height / 2);  
      }
}; 

int main( )    			// Main function for the program 
{ 
   Shape *shape;
   Rectangle rec(10,7); 
   Triangle  tri(10,5); 
  shape = &rec;     		// store the address of Rectangle 
   
   shape->area();   		// call rectangle area. 
   shape = &tri;    		// store the address of Triangle 
   
   shape->area();   		// call triangle area. 
   
   return 0; 
} 

When the above code is compiled and executed, it produces following result:
Parent class area
Parent class area
The reason for the incorrect output is that the call of the function area() is being set once by the compiler as the version defined in the base class. This is called static resolution of the function call, or static linkage - the function call is fixed before the program is executed. This is also sometimes called early binding because the area() function is set during the compilation of the program.







Powered by Blog - Widget
Face Upward - Widget