অপারেটর ওভারলোডিং অবজেক্ট-অরিয়েন্টেড প্রোগ্রামিং-এ একটি গুরুত্বপূর্ণ বৈশিষ্ট্য। এটি কম্পাইল-টাইম বা স্ট্যাটিক পলিমরফিজমের একটি রূপ। এখানে 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 ওভারলোড লাগবে।