下面程序对一维坐标点类Point进行了运算符重载: #include <iostream> using namespace std; class Point{ public: Point(int val){x=val;} Point& operator++( ){x++;return*this;} Point operator++(int){Point old=*this;++(*this);return old;} int GetX( )eonst t return x;} private: int x; }; int main( ){ Point a(10); cout<<(++A) .GetX( ); cout<<a++.GetX( ); return 0; } 编译和运行情况是
A.运行时输出1011
B.运行时输出1111
C.运行时输出1112
D.编译有错
参考答案:B
解析: Point& operator++( ){x++;return*this;}是在成员函数运算符重载单目运算符(前缀方式),Point operator++(int){Point old=*this;++(*t11is);return old;}定义运算符的成员函数重载++(后缀方式),所以均打印11、11。