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

অপারেটর ওভারলোডিং ব্যবহার করে কমপ্লেক্স নম্বর বিয়োগ করার C++ প্রোগ্রাম


অপারেটর ওভারলোডিং (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)।

অন্যান্য ওভারলোডেবল অপারেটর: +, *, /, ==, <<, > ইত্যাদি।

  1. রিকার্সন ব্যবহার করে সংখ্যার ফ্যাক্টোরিয়াল বের করার C++ প্রোগ্রাম

  2. ইটারেশন (Iteration) ব্যবহার করে ফ্যাক্টোরিয়াল বের করার C++ প্রোগ্রাম

  3. রিকার্সন ব্যবহার করে ফ্যাক্টোরিয়াল ক্যালকুলেট করার C++ প্রোগ্রাম (একাধিক টেস্ট কেস)

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