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

C++-এ অ্যারে ইনডেক্স অপারেটর [] ওভারলোডিং

অপারেটর ওভারলোডিং অবজেক্ট-অরিয়েন্টেড প্রোগ্রামিং-এ একটি গুরুত্বপূর্ণ বৈশিষ্ট্য। এটি কম্পাইল-টাইম বা স্ট্যাটিক পলিমরফিজমের একটি রূপ। এখানে operator[] ওভারলোড করে অ্যারে-স্টাইল অ্যাক্সেস সক্ষম করা হয়েছে।

এলগরিদম

শুরু
  Arr ক্লাস তৈরি করুন এবং অ্যারের আকার ঘোষণা করুন
  ক্লাসের ভিতরে ফর লুপ দিয়ে সব উপাদান ইনিশিয়ালাইজ করুন
  operator[] ওভারলোড করুন বাউন্ড চেকিংসহ
  সব উপাদান প্রিন্ট করুন
শেষ

উদাহরণ কোড

#include <iostream>
#include <stdlib.h>
using namespace std;

const int M = 7;

class Arr {
private:
    int A[M];
    int size;
public:
    Arr(int s, int v) {
        if (s > M) {
            cout << endl << "This is beyond maximum size";
            exit(1);
        }
        size = s;
        for (int i = 0; i < size; i++)
            A[i] = v;
    }

    // সাবস্ক্রিপ্ট অপারেটর ওভারলোডিং
    int& operator[](int i) {
        if ((i < 0) || (i >= size)) {
            cout << endl << "Error: Array out of bound";
            exit(1);
        }
        return A[i];  // রেফারেন্স রিটার্ন → লিভ্যাল (lvalue) হিসেবে ব্যবহার সম্ভব
    }
};

int main() {
    int i = 0;
    Arr a(7, 0);

    for (i = 0; i < 7; i++)
        a[i] = i * 10;  // লিখা (assignment)

    cout << "Array elements are:" << endl;
    for (i = 0; i < 7; i++) {
        int val = a[i];  // পড়া (read)
        cout << val << endl;
    }
    return 0;
}

আউটপুট

Array elements are:
0
10
20
30
40
50
60

মূল বিন্দু: operator[] অবশ্যই রেফারেন্স (int&) রিটার্ন করতে হবে যাতে এটিকে লিভ্যাল (assignment-এর বাম পাশে) হিসেবে ব্যবহার করা যায়। কনস্ট অবজেক্টের জন্য আলাদা const int& operator[](int) const ওভারলোড লাগবে।

  1. C++-এ সম অ্যারে পাজল (Sum Array Puzzle) সমাধান

  2. C++-এ ২D অ্যারে ফাংশনে পাস করা

  3. C++-এ অ্যারে ফাংশনে পাস করা (Passing Array to Function)

  4. C++-এ আনারি অপারেটর ওভারলোডিং