Operator Overloading in C++ | Bangla
Operator overloading in C++ Bangla Tutorial Blog
Posted on Wed, May 10 2023
Object Oriented Programming (OOP) তে একটা বিশেষ অংশ হল Operator Overloading। Operator Overloading এর ব্যপারটা বুঝতে হলে আগে Operator এর ব্যবহার সম্পর্কে জানতে হবে।
Operator বলতে আমরা বুঝি +, -, /, *, % ইত্যাদি। কোন সংখ্যা নিয়ে কাজ কিংবা দুটি String যোগ করার ক্ষেত্রে আমরা Operator ব্যবহার করে থাকি। যেমন :
int main(int argc, char **argv){
int a = 10, b = 10;
int c = a + b;
return 0;
}
এখানে দুটি Integer Number এর Variable a ও b যোগ করা হয়েছে এবং যোগফল c variable এ Assign করা হয়েছে।
এবার, আসা যাক Operator Overloading এ। আপনি একটি Class তৈরি করলেন যার নাম হল Point ।
// Operator Overloading
#include <iostream>
using namespace std;
class Point
{
public:
int x, y;
Point(int x, int y){
this->x = x;
this->y = y;
}
void print(){
cout<<"X : "<<this->x<<", Y : "<<this->y<<endl;
}
};
int main(int argc, char **argv){
Point p(10, 20);
p.print();
return 0;
}
ঠিক উপরের মতো। এখন আপনি চাইছেন দুইটা Point এর Object তৈরি করে একে অপরের সাথে যোগ করবেন এবং আর একটি Object এর মান Assign করবেন । ঠিক এমন
int main(int argc, char **argv){
Point p1(10, 20);
Point p2(20, 30);
Point p3 = p1 + p2;
p3.print();
return 0;
}
কিন্তু এই Code টি আপনাকে Error দেখাবে।
তাই এটির জন্য প্রয়োজন Operator Overloading. Code এর মধ্যে কিছু পরিবর্তন আনলেই এটি সমাধান করা যায়। নিচের funtion টি Point Class এর লিখে দিলেই এই কাজটি করা যাবে :
Point operator+(Point p){
Point tmp(0, 0);
tmp.x = this->x + p.x;
tmp.y = this->y + p.y;
return tmp;
}
এখানে মূলত এমন এক Function ব্যবহার হয়েছে যেখানে Object হল return type এবং operator keyword ও তার পাশে যে operator টি overload করতে হবে সেটি যেমন + (add)। এরপর নতুন একটি Object তৈরি করে এর x এর value হল মূল object এর x এবং parameter এর object এর x এর যোগফল। এভাবে y এর ক্ষেত্রেও ঠিক একই রকম।
এবার আর একবার সম্পূর্ন Code টি run করলেই দেখা যাবে সঠিক যোগফল আসবে। আপনি চাইলে এভাবে -, /, * Operator এর কাজ করতে পারেন।
Full Code :
// Operator Overloading
#include <iostream>
using namespace std;
class Point
{
public:
int x, y;
Point(int x, int y){
this->x = x;
this->y = y;
}
Point operator+(Point p){
Point tmp(0, 0);
tmp.x = this->x + p.x;
tmp.y = this->y + p.y;
return tmp;
}
void print(){
cout<<"X : "<<this->x<<", Y : "<<this->y<<endl;
}
};
int main(int argc, char **argv){
Point p1(10, 20);
Point p2(20, 30);
Point p3 = p1 + p2;
p3.print();
return 0;
}
Write about the post
Comments from people (0)