রূপান্তর অপারেটর কী?
C++ অবজেক্ট-ওরিয়েন্টেড ডিজাইন সমর্থন করে, যা আমাদের বাস্তব জগতের অবজেক্টগুলোকে কনক্রিট টাইপ (concrete types) হিসেবে ক্লাস আকারে তৈরি করতে দেয়। কখনও কখনও আমাদের একটি কনক্রিট টাইপের অবজেক্টকে অন্য টাইপ বা প্রিমিটিভ ডেটা টাইপে রূপান্তর করতে হয়। এই রূপান্তর করার জন্য C++-এ রূপান্তর অপারেটর (conversion operator) ব্যবহার করা হয়। এটি ক্লাসের মধ্যে অপারেটর ওভারলোডিং ফাংশনের মতো তৈরি করা হয়।
উদাহরণ: কমপ্লেক্স নম্বরের মagni튜ড বের করা
নিচের উদাহরণে একটি My_Complex ক্লাস তৈরি করা হয়েছে যার দুটি ডেটা সদস্য: real (বাস্তবাংশ) এবং imag (কল্পনাংশ)। যখন এই ক্লাসের অবজেক্টকে double টাইপের ভেরিয়েবলে অ্যাসাইন করা হয়, তখন রূপান্তর অপারেটর স্বয়ংক্রিয়ভাবে কমপ্লেক্স নম্বরের magnitude (परিমাণ) ফেরত দেয়।
উদাহরণ কোড
#include <iostream>
#include <cmath>
using namespace std;
class My_Complex {
private:
double real, imag;
public:
My_Complex(double re = 0.0, double img = 0.0) : real(re), imag(img) {} // ডিফল্ট কনস্ট্রাক্টর
double mag() { // সাধারণ ফাংশন magnitude পেতে
return getMagnitude();
}
operator double() { // রূপান্তর অপারেটর magnitude জেনারেট করতে
return getMagnitude();
}
private:
double getMagnitude() { // কমপ্লেক্স অবজেক্টের magnitude বের করা
return sqrt(real * real + imag * imag);
}
};
int main() {
My_Complex complex(10.0, 6.0);
cout << "Magnitude using normal function: " << complex.mag() << endl;
cout << "Magnitude using conversion operator: " << complex << endl;
return 0;
}
আউটপুট
Magnitude using normal function: 11.6619 Magnitude using conversion operator: 11.6619
ব্যাখ্যা: এখানে operator double() হল রূপান্তর অপারেটর। যখন complex অবজেক্টটি cout-এ প্রিন্ট করা হয়, তখন এটি স্বয়ংক্রিয়ভাবে double-এ রূপান্তরিত হয় এবং magnitude মানটি প্রিন্ট হয়।