অপারেটর ওভারলোডিং (Operator Overloading) দিয়ে ইউজার-ডিফাইনড টাইপের জন্য বিল্ট-ইন অপারেটর (যেমন -) রিডিফাইন করা যায়। এখানে কমপ্লেক্স নম্বর বিয়োগের জন্য - ওভারলোড করা হয়েছে।
উদাহরণ কোড
#include <iostream>
using namespace std;
class ComplexNum {
private:
int real, imag;
public:
ComplexNum(int r = 0, int i = 0) {
real = r;
imag = i;
}
ComplexNum operator-(ComplexNum const &obj1) {
ComplexNum obj2;
obj2.real = real - obj1.real;
obj2.imag = imag - obj1.imag;
return obj2;
}
void print() {
if (imag >= 0)
cout << real << " + i" << imag << endl;
else
cout << real << " + i(" << imag << ")" << endl;
}
};
int main() {
ComplexNum comp1(15, -2), comp2(5, 10);
cout << "The two complex numbers are:" << endl;
comp1.print();
comp2.print();
cout << "The result of the subtraction is: ";
ComplexNum comp3 = comp1 - comp2; // Operator overloading used here
comp3.print();
return 0;
}
আউটপুট
The two complex numbers are: 15 + i(-2) 5 + i10 The result of the subtraction is: 10 + i(-12)
ব্যাখ্যা
ComplexNum ক্লাস
real,imag— রিয়েল এবং ইমেজিনারি পার্ট।- কনস্ট্রাক্টর ডিফল্ট ভ্যালু ০ দিয়ে।
Operator Overloading
ComplexNum operator-(ComplexNum const &obj1)—-অপারেটর ওভারলোড।const &— কনস্ট রেফারেন্স (কপি এড়াতে এবং মডিফিকেশন রোধ করতে)।- নতুন অবজেক্ট
obj2তৈরি করে রিয়েল ও ইমেজিনারি পার্ট আলাদা বিয়োগ করে রিটার্ন।
print() ফাংশন
ইমেজিনারি পার্ট নেগেটিভ হলে ফরম্যাটিং: 10 + i(-12)।
অন্যান্য ওভারলোডেবল অপারেটর: +, *, /, ==, <<, > ইত্যাদি।