单选题 下列程序中对一维坐标点类Point进行运算符重载:
class Point
{
public:
Point(int val){x=val;}
Point& operator++()
{
x++;
return *this;
}
Point operator++(int)
{
Point old=*this;
++(*this);
return old;
}
int GetX()const{return x;}
private:
int x;
};
int main()
{
Point a(10);
cout<<(++a).GetX();
cout<<a++.GetX();
return 0;
}
编译和运行情况是______。
【正确答案】 B
【答案解析】[解析] Point& Point::operator++()为前置++符号重载,而包含一个“哑”参数的Point& Point::operator++(int)为后置++符号重载,由于题中其内部实现前置++返回的是执行operator++后的对象,后置++返回的是执行operator++之前的对象。因此,第一个前置operator++调用将返回10+1的值,也就是11,而第二个将返回11+1之前的值,也就是11。