ফাংশন ওভারলোডিং পদ্ধতি ওভারলোডিং হিসাবেও পরিচিত। ফাংশন ওভারলোডিং হল পলিমারফিজমের ধারণা দ্বারা প্রদত্ত বৈশিষ্ট্য যা অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিংয়ে ব্যাপকভাবে ব্যবহৃত হয়।
ফাংশন ওভারলোডিং অর্জন করতে, ফাংশনগুলিকে এই শর্তগুলি পূরণ করতে হবে -
-
রিটার্ন টাইপ ফাংশন একই হওয়া উচিত
-
ফাংশনগুলির নাম একই হওয়া উচিত
-
প্যারামিটারের ধরন ভিন্ন হতে পারে কিন্তু সংখ্যায় একই হওয়া উচিত
উদাহরণ
int display(int a); int display(float a); // both the functions can be overloaded int display(int a); float display(float b); //both the functions can’t be overloaded as the return type of one function is different from another
আসুন C++ এ ওভারলোড করা যায় না এমন ফাংশনগুলি নিয়ে আলোচনা করা যাক
-
বিভিন্ন নাম এবং বিভিন্ন সংখ্যক পরামিতি সহ ফাংশন
উদাহরণ
#include<iostream> using namespace std; int max_two(int a, int b) //contains two parameters{ if(a>b){ return a; } else{ return b; } } int max_three(int a, int b ,int c) //contains three parameters{ if (a>b && a>c){ return a; } else if(b>c){ return b; } else{ return c; } } int main(){ max_two(a,b); return 0; }
-
একই নামের ফাংশন কিন্তু ভিন্ন রিটার্ন টাইপ
উদাহরণ
#include<iostream> using namespace std; int max_two(int a, int b){ if(a>b){ return a; } else{ return b; } } float max_two(int a, int b){ if(a>b){ return a; } else{ return b; } } int main(){ max_two(a, b); return 0; }
-
একটি সদস্য ফাংশন যা ফাংশন ওভারলোডিংয়ের সমস্ত শর্ত পূরণ করে কিন্তু যদি এটি একটি স্ট্যাটিক সদস্য ফাংশন হয় তবে এটি ওভারলোড করা যাবে না।
উদাহরণ
#include<iostream> class check{ static void test(int i) { } void test(int i) { } }; int main(){ check ch; return 0; }
-
যদি দুটি ফাংশন ঠিক একই হয় তবে শুধুমাত্র ডিফল্ট আর্গুমেন্টে ভিন্ন হয় যেমন একটি ফাংশন ডিফল্ট আর্গুমেন্ট ধারণ করে, তাহলে সেগুলিকে একই হিসাবে বিবেচনা করা হয় যার অর্থ তাদের ওভারলোড করা যাবে না এবং তাই কম্পাইলার একই ফাংশনের পুনঃ ঘোষণার একটি ত্রুটি নিক্ষেপ করবে৷
উদাহরণ
#include<iostream> #include<stdio.h> using namespace std; int func_1 ( int a, int b){ return a*b; } int func_1 ( int a, int b = 40){ return a+b; } Int main(){ func_1(10,20); return 0; }