class Integer
{
public:
void Set(int ii=0){i=ii;}
Integer operator+(int);
Integer operator+(Integer&);
private:
int i;
};
Integer Integer::operator+(Integer& x)
{
Integer result;
result.Set(i+x.i);
return result;
}
void main()
{
Integer A,B,C;
A.Set(20);
C.Set(10);
B=A+4;
B=A+C;
B=4+A;// 错误的语句
}
对于错误的原因解释:在class Integer中,operator+()有两种重载形式:一种是带int参数,另一种是带Integer参数,这就意味着可以将一个Integer加到一个int上和将一个Integer加到另一个Integer上,但不能把将一个int加到一个Integer上。
对于上面的解释自己还是不太清楚。
刚刚来到这里,欢迎广大网友灌水赐教。呵呵!