i can't quite figure out how the arithmetic operators are supposed to be used, as 2 parameters are being passed in:

Code:

#include <iostream>
#include <cmath>
using namespace std;
class complex
{
private:
double real; // real part
double imag; // imaginary part
public:
complex(double x=0.0, double y=0.0);
double magnitude() const; // return magnitude
double realPart() const; // return real part
double imagPart() const; // return imaginary part
complex operator- ();
friend complex operator+ (const complex& lhs, const complex &rhs);
friend complex operator- (const complex& lhs, const complex &rhs);
friend complex operator* (const complex& lhs, const complex &rhs);
friend complex operator/ (const complex& lhs, const complex &rhs);
friend bool operator== (const complex& lhs, const complex &rhs);
friend ostream& operator << (ostream& ostr, const complex &x);
friend istream& operator >> (istream& istr, complex &x);
};
double complex::magnitude() const
{
double temp = 0.0;
temp = (real * real) + (imag * imag);
temp = sqrt(temp);
}
double complex::realPart() const
{
return real;
}
double complex::imagPart() const
{
return imag;
}
complex operator+ (const complex& lhs, const complex &rhs)
{
return complex(lhs.real - rhs.real, lhs.imag - rhs.imag);
}
complex operator- (const complex& lhs, const complex &rhs)
{
return complex(lhs.real - rhs.real, lhs.imag - rhs.imag);
}
int main()
{
// complex number i= 0 + 1i
complex i(0,1), z1, z2;
// input values
cout << "Enter two complex numbers: ";
cin >> z1 >> z2;
cout << "Test the binary arithmetic operators:" << endl;
cout << " z1 + z2 = " << (z1 + z2) << endl;
cout << " z1 - z2 = " << (z1 - z2) << endl;
cout << " z1 * z2 = " << (z1 * z2) << endl;
cout << " z1 / z2 = " << (z1 / z2) << endl;
// test relational equality
if (z1 == z2)
cout << z1 << " = " << z2 << endl;
else
cout << z1 << " != " << z2 << endl;
// verify that i*i = -1 and that -i*i = 1
cout << "i*i = " << i*i << endl;
cout << "-i*i = " << -i*i << endl;
return 0;
}