Complex Overloading
Complex Overloading
#include<iostream>
using namespace std;
class Complex {
private:
int real;
int imag;
public:
Complex(int r=0, int i=0) {
real = r;
imag = i;
}
Complex operator + (Complex const &obj) {
Complex res;
res.real = real + obj.real;
res.imag = imag + obj.imag;
return res;
}
Complex operator - (Complex const &obj) {
Complex res;
res.real = real - obj.real;
res.imag = imag - obj.imag;
return res;
}
Complex operator * (Complex const &obj) {
Complex res;
res.real = real * obj.real - imag * obj.imag;
res.imag = real * obj.imag + imag * obj.real;
return res;
}
Complex operator / (Complex const &obj) {
Complex res;
int denom = obj.real * obj.real + obj.imag * obj.imag;
res.real = (real * obj.real + imag * obj.imag) / denom;
res.imag = (imag * obj.real - real * obj.imag) / denom;
return res;
}
void display() {
cout << real << " + i" << imag << endl;
}
};
int main() {
Complex c1(3, 7), c2(4, 8);
Complex c3 = c1 + c2;
Complex c4 = c1 - c2;
Complex c5 = c1 * c2;
Complex c6 = c1 / c2;
>> OUTPUT
Addition: 7 + i15
Subtraction: -1 + i-1
Multiplication: -44 + i52
Division: 0 + i0