跪求大神。我写的程序不对么?
题目:声明一个Point类,有坐标(x,y)两个成员变量;对Point类重载“++”(自增)、“--”(自减)运算符,实现坐标值的改变。
我的代码是:
#include <iostream>
using namespace std;
class point
{
public:
point(int x,int y)
{
this->x=x;
this->y=y;
}
~point(){}
void print()
{
cout<<"x="<<x<<",y="<<y<<endl;
}
void operator++()
{
x++;
y++;
}
void operator--()
{
x--;
y--;
}
private:
int x;
int y;
};
int main()
{
point a(2,2);
a++;//a.operator++(a)
a.print();
a--;
a.print();
return 0;
}
而正确答案是:
#include <iostream>
using namespace std;
class Point
{
private:
int x;
int y;
public:
Point(int x,int y)
{
this->x=x;
this->y=y;
}
Point& operator ++()
{
x++;
y++;
return *this;
}
Point& operator --()
{
x--;
y--;
return *this;
}
void print()
{
cout<<"x="<<x<<",y="<<y<<endl;
}
};
int main()
{
Point p(2,2);
++p;
p.print();
--p;
p.print();
}
我想知道我做的对么。。
和正确答案不同。。但是也可以出结果。。
那么答案比我好在哪里呢
[解决办法]
++和--运算符有返回值,这样就可以给其他对象赋值。例如p2=++p1;