问题 单项选择题

下面程序中对一维坐标点类Point进行运算符重载#include using namespace std; class Point{public:Point(int val){x=val;} Point&operator++(){x++;return*this}Point operator 4++(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.运行时输出1011

B.运行时输出1111

C.运行时输出1112

D.编译有错

答案

参考答案:B

解析:本题考查++运算符的重载及运算符的优先级两个知识点,由于创建对象a(10)含参数,所以执行第三个重载构造函数Point Operator ++(int)。另外,在执行(++a).GetX()是先将对象a进行重载,++a运算,然后访问成员函数GetX(),所以X=11,执行a++.GetX()也是将对象a进行重载,a++运算,再访问成成函数GetX(),所以x=11。

单项选择题
单项选择题