C++语言基础 例程 运算符重载的方法

时间:2022-04-29 17:24:59

贺老师的教学链接  本课讲解


以复数的加法为例:用成员函数实现复数加法

#include <iostream>using namespace std;
class Complex
{
public:
Complex( )
{
real=0;
imag=0;
}
Complex(double r,double i)
{
real=r;
imag=i;
}
Complex add(Complex &c2);
void display( );
private:
double real;
double imag;
};
Complex Complex::add(Complex &c2)
{
Complex c;
c.real=real+c2.real;
c.imag=imag+c2.imag;
return c;
}

void Complex::display( )
{
cout<<"("<<real<<","<<imag<<"i)"<<endl;
}

int main( )
{
Complex c1(3,4),c2(5,-10),c3;
cout<<"c1=";
c1.display( );
cout<<"c2=";
c2.display( );
c3=c1.add(c2);
cout<<"c1+c2=";
c3.display( );
return 0;
}


运算符重载的方法

#include <iostream>using namespace std;class Complex{public:    Complex( )    {        real=0;        imag=0;    }    Complex(double r,double i)    {        real=r;        imag=i;    }    Complex operator+(Complex &c2);    void display( );private:    double real;    double imag;};Complex Complex::operator+(Complex &c2){    Complex c;    c.real=real+c2.real;    c.imag=imag+c2.imag;    return c;} void Complex::display( ){    cout<<"("<<real<<","<<imag<<"i)"<<endl;} int main( ){    Complex c1(3,4),c2(5,-10),c3,c4;        cout<<"c1=";    c1.display( );    cout<<"c2=";    c2.display( );    c3=c1+c2;  //c3=c1.operator+(c2);    cout<<"c1+c2=";    c3.display( );    return 0;}


实现operator+=(Complex &c2)?

#include <iostream>using namespace std;class Complex{public:    Complex( )    {        real=0;        imag=0;    }    Complex(double r,double i)    {        real=r;        imag=i;    }    Complex & operator += (const Complex & c);    void display( );private:    double real;    double imag;};Complex & Complex::operator += (const Complex & c){    real += c.real;    imag += c.imag;    return *this;}void Complex::display( ){    cout<<"("<<real<<","<<imag<<"i)"<<endl;} int main( ){    Complex c1(3,4),c2(5,-10);    c1+=c2;    cout<<"c1=";    c1.display();    return 0;}