செயற்கூறு பணிமிகுப்பு (Function overloading)
செய்தி அல்லது தரவினை ஒன்றுக்கு மேற்பட்ட வடிவங்களில் செயலாக்கவல்ல செயற்கூறின் திறனையே செயற்கூறு பணிமிகுப்பு என்கிறோம். வேறு வகையில் கூறினால், பணி மிகுப்பு என்பது இரண்டு அல்லது அதற்கு மேற்பட்ட செயற்கூறுகள் ஒரே பெயரைப் பகிர்ந்து கொண்டு வேறுபட்ட அளபுருக்களை கொண்டிருக்கும். செயற்கூறுகள் ஒரே பெயரை பகிர்ந்து கொள்ளுதலை பணிமிகுப்பு என்றும் இந்த செயல்பாட்டை செயற்கூறு பணிமிகுப்பு என்கிறோம். செயற்கூறின் அளபுருக்களின் எண்ணிக்கை மற்றும் தரவினங்களை செயற்கூறு முன்வடிவு என்கிறோம். பணி மிகுக்கப்பட்ட செயற்கூறினை அழைக்கும் போது, நிரல் பெயர்ப்பி மிகச் சரியான வரையறுப்பை, அழைக்கப்பட்ட செயற்கூறின் அளபுருக்களின் வகையோடு வரையறுக்கப்பட்ட செயற்கூறின் செயலுருபுகளின் வகையோடு ஒப்பிட்டு தீர்மானிக்கும். மிகச் சிறந்த செயற்கூறு அல்லது செயற்குறி பணிமிகுப்பு தேர்ந்தெடுப்பு முறையை பணிமிகுப்பு தீர்மானம் என்கிறோம்.
செயற்கூறு பணிமிகுப்பின் தேவைகள் (Need For Function overloading)
சில சமயங்களில், ஒரே செயலைக் குறிக்கும் வெவ்வேறு பொருள் கொண்ட பெயரை க்கண்டறிதல் கடினமான செயல் ஆகும்.
வட்டம், முக்கோணம் மற்றும் செவ்வகம் ஆகியவற்றின் பரப்பளவைக் கண்டறியும் செயற்கூறு வரையறைகளைக் கீழே காணலாம்.
float area_circle(float radius) // ஒரு வட்டத்தின் பரப்பைக் கணிக்க
float area_triangle(float half,floatbase,float height) // முக்கோணத்தின் பரப்பைக் கணிக்க
float area_rectangle(float length , float breadth) // செவ்வகத்தின் பரப்பைக் கணிக்க
இதனைக் கீழ்கண்ட விதத்தில் ஒற்றை செயற்கூறு தலைப்பைக் கொண்டு மாற்றி எழுதலாம்.
float area ( float radius);
float area ( float half, float base, float height);
float area (float length, float breadth);
நிரல்15.1 செயற்கூறு பணிமிகுப்பினை விளக்கும் எளிய C++ நிரலை கீழே காணலாம்.
#include <iostream>
using namespace std;
void print(int i)
{cout<< " It is integer " << i <<endl;}
void print(double f)
{ cout<< " It is float " << f <<endl;} void print(string c)
{ cout<< " It is string " << c <<endl;} int main() {
print(10);
print(10.10);
print("Ten");
return 0;
}
வெளியீடு
It is integer 10
It is float 10.1
It is string Ten
செயற்கூறு பணிமிகுப்பு, பல்லுருவாக்கத்தை மட்டுமே நடைமுறைப்படுத்தாமல் ஓர் நிரலில் ஒப்பீடுகளின் எண்ணிக்கையைக் குறைத்து, நிரல் வேகமாக செயல்பட உதவுகிறது. நிரலர், அதிக செயற்கூற்றின் பெயர்களை நினைவில் வைத்துக் கொள்வதை தவிர்க்க வழி செய்கிறது.
செயற்கூறு பணிமிகுப்பிற்கான விதிமுறைகள் (Rules for function overloading)
1. பணிமிகுத்த செயற்கூறுகள் முறையான அளபுருக்களின் எண்ணிக்கையிலோ, அல்லது அவற்றின் தரவு இனங்களிலோ வேறுபட்டிருக்க வேண்டும்.
2. பணிமிகுத்த செயற்கூறுகள் திருப்பியனுப்பும் தரவினம் ஒன்றாக இருக்க வேண்டும் என்ற தேவையில்லை.
3. பணிமிகுத்த செயற்கூறுகளின் தானமைவு செயலுருபுகளை அளபுருக்களின் பட்டியலில் ஒரு பகுதியாக C++ நிரல் பெயர்ப்பி கருதிக் கொள்ளாது.
நிரல் 15.2 செயற்கூறு பணிமிகுப்பினை விளக்கும் C++ நிரலை கீழே காணலாம்
#include <iostream>
using namespace std;
long add(long, long);
long add(long,long,long);
float add(float, float);
int main()
{
long a, b, c,d;
float e, f, g;
cout << "Enter three integers\n";
cin >> a >> b>>c;
d=add(a,b,c); //number of arguments different but same data type
cout << "Sum of 3 integers: " << d << endl;
cout << "Enter two integers\n";
cin >> a >> b;
c = add(a, b); //two arguments data type same with above function call and different with below function call
cout << "Sum of 2 integers: " << c << endl;
cout << "Enter two floating point numbers\n";
cin >> e >> f;
g = add(e, f); //two arguments similar to the above function call but data type different
cout << "Sum of floats: " << g << endl;
}
long add(long c, long g)
{
long sum;
sum = c + g;
return sum;
}
float add(float c, float g)
{
float sum;
sum = c + g;
return sum;
}
long add(long c, long g,long h)
{
long sum;
sum = c + g+h;
return sum;
}
வெளியீடு
Enter three integers
3 4 5
Sum of 3 integers: 12
Enter two integers
4 6
Sum of 2 integers: 10
Enter two floating point numbers
2.1 3.1
Sum of floats: 5.2