下面程序中对一维坐标点类Point进行运算符重载 #include<iostream> using namespace std; class Point{ public: Point(int val){x=val;} Point& operator++()

admin2020-11-11  28

问题 下面程序中对一维坐标点类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() const{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

解析 此题考查的是重载增l运算符“++”。此题中,Point&operator++()重载的是前缀形式,而Point operator++(int)重载的是后缀形式。所以主函数中第1条输出语句输出11,此时a.x的值为11;第2条输出语句,首先创建了一个Point对象old保存自身,然后通过语句++(*this);调用前缀++的重载函数,因为返回值是改变前保存的old对象,故仍输出11。
转载请注明原文地址:https://kaotiyun.com/show/jiyp777K
0

随机试题
最新回复(0)