//oper.h
#ifndef OPER_H
#define OPER_H
#include <iostream>
using std::ostream;
namespace mySp{
class Complex{
private:
double real;
double imag;
public:
Complex(double r = 0.0, double i = 0.0);
//重载运算符函数为类的成员函数
Complex operator +(Complex &j);
//重载运算符函数为类的友元函数
friend Complex operator -(Complex &i,Complex &j);
friend ostream & operator <<(ostream &o,Complex &i); //注意带上ostream &o
void setReal(double r);
void setImag(double i);
double getReal();
double getImag();
};
}
#endif
//oper.cpp
#include "oper.h"
#include <iostream>
using std::ostream;
using mySp::Complex;
Complex::Complex(double r , double i ):real(r),imag(i){}
Complex Complex::operator+(Complex &j){
return Complex(getReal() + j.getReal(), getImag() + j.getImag());
}
Complex mySp::operator-(Complex &i, Complex &j){ //注意加上mySp::
return Complex(i.getReal() - j.getReal(), i.getImag() - j.getImag());
}
ostream & mySp::operator <<(ostream &o, Complex &i){
return o << i.getReal() << (i.getImag()<=0?"":"+") << i.getImag() << "i";
}
void Complex::setReal(double r){
real = r;
}
void Complex::setImag(double i){
imag = i;
}
double Complex::getReal(){
return real;
}
double Complex::getImag(){
return imag;
}
#include "oper.h"
#include <iostream>
using std::cout;
using std::endl;
using mySp::Complex;
int main(){
Complex a(0, 1);
Complex b(1, 2);
Complex c = a + b;
Complex d = a - b;
cout << c << endl;
cout << d << endl;
return 0;
}