ফাংশন ওভারলোডিং (পলিমরফিজমের বৈশিষ্ট্য) এর জন্য শর্তগুলো পূরণ করতে হয়:
- ফাংশন নাম একই হতে হবে।
- রিটার্ন টাইপ একই হতে হবে (শুধু রিটার্ন টাইপ ভিন্ন হলে ওভারলোড হয় না)।
- প্যারামিটার লিস্ট ভিন্ন হতে হবে (টাইপ বা সংখ্যায়)।
ওভারলোড করা যাবে না এমন ফাংশন들의 উদাহরণ
১. ভিন্ন নাম ও ভিন্ন প্যারামিটার সংখ্যা
int max_two(int a, int b); // ২টি প্যারামিটার int max_three(int a, int b, int c); // ৩টি প্যারামিটার // নাম ভিন্ন, তাই ওভারলোডিং নয়
২. একই নাম কিন্তু ভিন্ন রিটার্ন টাইপ
int max_two(int a, int b); float max_two(int a, int b); // রিটার্ন টাইপ ভিন্ন → কম্পাইল এরর
৩. স্ট্যাটিক মেম্বার ফাংশন vs নন-স্ট্যাটিক
class check{
static void test(int i) {}
void test(int i) {} // স্ট্যাটিক ও নন-স্ট্যাটিক একসাথে → ওভারলোড হয় না
};
৪. ডিফল্ট আর্গুমেন্টের কারণে দ্বন্দ্ব
int func_1(int a, int b){ return a*b; }
int func_1(int a, int b = 40){ return a+b; } // দ্বিতীয়টি ডিফল্ট আর্গুমেন্ট دار
// func_1(10,20) কল করলে দ্বন্দ্ব → কম্পাইল এরর
উপরের ক্ষেত্রগুলোতে কম্পাইলার রি-ডিক্লেরেশন এরর দেবে।