কম্পিউটার টিউটোরিয়াল

C++-এ ফাংশন ওভারলোডিং ও const কীওয়ার্ড

C++-এ const মেম্বার ফাংশন ও নন-const মেম্বার ফাংশন একই নামে ওভারলোড করা যায়। কোনটি কল হবে তা অবজেক্টের const-নেস (const-ness) উপর নির্ভর করে।

উদাহরণ ১: অবজেক্টের const-ness অনুযায়ী কল

#include <iostream>
using namespace std;

class MyClass {
public:
    void my_func() const { cout << "Const function called" << endl; }
    void my_func() { cout << "Non-const function called" << endl; }
};

int main() {
    MyClass obj;
    const MyClass obj_c;
    obj.my_func();   // Non-const version
    obj_c.my_func(); // Const version
    return 0;
}

আউটপুট

Non-const function called
Const function called

উদাহরণ ২: প্যারামিটারে const (এরর)

প্যারামিটারে শুধু const দিয়ে ওভারলোড করা যায় না (টাইপ একই মনে হয়)।

void my_func(const int x) { ... }
void my_func(int x) { ... } // Error: cannot overload

উদাহরণ ৩: পয়েন্টার/রেফারেন্সে const (ওভারলোড সম্ভব)

void my_func(const int* x) { cout << "Const pointer" << endl; }
void my_func(int* x) { cout << "Non-const pointer" << endl; }

int main() {
    int x = 10;
    my_func(&x); // Non-const version called
    return 0;
}

আউটপুট

Non-const function called

নিয়ম: const কোভালেন্স (cv-qualifiers) শুধু পয়েন্টার/রেফারেন্সের পয়েন্ট-টু টাইপে বা মেম্বার ফাংশনের *this পয়েন্টারে ওভারলোডিংয়ে অর্থ বহন করে।

  1. C++-এ #define এবং const কিওয়ার্ডের পার্থক্য

  2. C++-এ const কিওয়ার্ড কী?

  3. PHP-তে ফাংশন ওভারলোডিং এবং ওভাররাইডিং

  4. C#-তে readonly এবং const কীওয়ার্ডের পার্থক্য