运算符重载在vc6.0中存在bug。以下两段代码实现的功能相同,写法和相应的头文件却不同。 代码1: #include <iostream.h> //必须用这个,否则编译通不过 //using namespace std; class complex{ private: int real,imag; public: complex(int a=0,int b=0) { real=a; imag=b; } friend complex operator+(complex &a,complex &b); void show() { cout<<real<<"+"<<imag<<"i"<<endl; } ~complex() { cout<<"显示此信息"<<endl; } }; complex operator+(complex &a,complex &b) { complex c; c.real=a.real+b.real; c.imag=a.imag+b.imag; return c; } void main() { complex p(1,2),p1(3,4),p2; p2=operator+(p,p1); // p2=p+p1; //这样写也可以 p2.show(); } 代码2: #include <iostream> using namespace std; class complex { private: int real,imag; public: complex(int a=0,int b=0) { real=a; imag=b; } complex operator+(complex &b); void show() {cout<<real<<"+"<<imag<<"i"<<endl;} ~complex() { cout<<"析构"<<endl; } }; complex complex::operator+(complex &b) { complex c; c.real=real+b.real; c.imag=imag+b.imag; return c; } void main() { complex p(1,2),p1(3,4),p2; p2 = p + p1; p2.show(); };