Polymorphism in C++ Tamil Linto

Polymorphism என்பது பல வடிவங்களைக் கொண்டதாகும் என்று பொருள். எளிமையான சொற்களில் கூறினால், ஒரு செய்தியை பல வடிவத்தில் காட்டுவது Polymorphism என்று அழைக்கபடுகிறது.

Type of Polymorphism

  1. Compile time (Static) Polymorphism
  2. Run time (Dynamic) Polymorphism

Compile time (Static) Polymorphism

இந்த வகையான Polymorphism function overloading அல்லது operator overloading மூலம் செயல்படுகிறது.

What is Function Overloading?

Function overloading: என்பது ஒன்றுக்கு மேற்பட்ட functions ஒரே மாதிரியான பெயரை(name) பெற்று, அதில் அனுப்பகூடிய parameters அனைத்தும் வெவ்வேறாக இருந்தால் அது Function overloading என்று அழைக்கபடுகிறது.

C++ program for function overloading

#include <iostream.h>
using namespace std; 
class Linto{ 
    public: 
    // function with 1 int parameter 
    void shape(int radius){ 
        cout << "Radius of circle is" << radius << endl; 
    } 
    // function with same name 1 parameter but data type is double
    void shape(double length){ 
        cout << "Length of the line is " << length << endl; 
    } 
    // function with same name and 2 parameters  but data type is int and double
    void shape(int width, double height){ 
        cout << "Width of rectancle is " << width <<",  Height of the rectangle is "<< height << endl; 
    } 
}; 
int main() { 
    Linto obj1; 
    // Which function is called will depend on the parameters passed 
    // The first 'shape' is called  
    obj1.shape(20); 
    // The second 'shape' is called 
    obj1.shape(9.132); 
    // The third 'shape' is called 
    obj1.shape(50,23.5); 
    return 0; 
} 

Output:

Radius of circle is 20
Length of the line is 9.132
Width of rectancle is 50, Height of the rectangle is 23.5

மேலே கொடுக்கப்பட்டுள்ள program-ல் shape என்ற function மூன்று முறை கொடுக்கப்பட்டுள்ளது ஆனால் அதில் செலுத்தகூடிய values மட்டும் வெவ்வேறாக இருக்கின்றது. இதை பொருத்து ஒரு function வெவ்வேறு கோணங்களில் வேலை செய்கின்றது இதுவே function overloading அதாவது compile time polymorphism என்று அழைக்கபடுகிறது.

Run time (Static) Polymorphism

இந்த வகையான Polymorphism function overriding மூலம் செயல்படுகிறது.

What is Function Overriding?

Function Overriding: base class-ல் உள்ள ஒரு function ஆனது, derived class-லும் அதே name-ல் இருந்தால் அது function overriding. இந்த இரண்டு function-களுக்கு உள்ளே கொடுக்ககூடிய definition ஆனது ஒரேமாதிரி இருக்கவேண்டிய அவசியமில்லை.

C++ program for function overriding

#include <iostream.h>
using namespace std; 
class Base { 
public: 
    virtual void print (){ 
    cout << "print base class"  <<endl; 
    } 
    void show (){ 
    cout << "show base class"  <<endl; 
    } 
};  
class derived:public base{ 
public: 
//print () is already virtual function in derived class, 
//we could also declared as virtual void print () explicitly 
    void print (){ 
    cout << "print derived class"  <<endl; 
    } 
    void show (){ 
    cout << "show derived class"<<endl; 
    } 
}; 
  
//main function 
int main(){ 
    base *bptr; 
    derived d; 
    bptr = &d; 
    //virtual function, binded at runtime (Runtime polymorphism) 
    bptr->print();  
    // Non-virtual function, binded at compile time 
    bptr->show();  
    return 0; 
}

Output:

print derived class
show base class

Comments