Polymorphism in C++ Tamil Linto
Polymorphism என்பது பல வடிவங்களைக் கொண்டதாகும் என்று பொருள். எளிமையான சொற்களில் கூறினால், ஒரு செய்தியை பல வடிவத்தில் காட்டுவது Polymorphism என்று அழைக்கபடுகிறது.
Type of Polymorphism
- Compile time (Static) Polymorphism
- 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 20Length 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 classshow base class
இது பற்றிய தங்களின் கருத்துகளை இங்கே பதிவிடுங்கள் . இது பயனுள்ளதாக விரும்பினால் மற்றவர்களுக்கும் இதை share செய்யுங்கள்.
Comments