主要是注意重载时如何调用重载运算符的问题。尤其是一元的时候。。例如这题的成员负号的调用。。怎么调用的呢?普通的不是应该是成员对象加运算符的情况下才调用的吗?一元有些特殊吗?
#include<iostream>
using namespace std;
class Complex
{public:
Complex(){real=0;imag=0;}
Complex(double r,double i){real=r;imag=i;}
Complex operator-(){real=-real;return *this;}
//Complex operator+(Complex &c2);
friend Complex operator+(Complex &c1,Complex&c2);
friend Complex operator+(Complex &c1,double dd);
//friend Complex operator-(Complex &c1);
void display();
private:
double real;
double imag;
};
//下面定义成员函数
//Complex Complex::operator+(Complex &c2)
//{
// cout<<"成员"<<endl;
// Complex c;
// c.real=real+c2.real;
// c.imag=imag+c2.imag;
// return c;
//}
Complex operator+(Complex &c1,Complex &c2)
{
Complex c3;
c3.real=c1.real+c2.real;
c3.imag=c1.imag+c2.imag;
return c3;
}
Complex operator+(Complex &c1,double dd)
{
Complex c3;
c3.real=c1.real+dd;
c3.imag=c1.imag;
return c3;
}
//Complex operator-(Complex &c1)
//{
// c1.real=-c1.real;
// return c1;
//}
void Complex::display()
{
cout<<"("<<real<<","<<imag<<")"<<endl;
}
//下面定义用于测试的main()函数
int main()
{
Complex c1(3,4),c2(5,-10),c3;
cout<<"c1=";
c1.display();
cout<<"c2=";
c2.display();
c3=c1+c2;
cout<<"c1+c2=";
c3.display();
double dd=3.5;
Complex c4=c1+dd;
cout<<"c1+dd=";
c4.display();
c4=-c4;
cout<<"-c4=";
c4.display();
return 0;
}