以复数的加法为例:用成员函数实现复数加法
#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; }