首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
下面程序中对一维坐标点类Point进行运算符重载 #include <iostream> using namespace std; class Point { public: Point(int val) {x=val;}
下面程序中对一维坐标点类Point进行运算符重载 #include <iostream> using namespace std; class Point { public: Point(int val) {x=val;}
admin
2017-10-17
79
问题
下面程序中对一维坐标点类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
解析
本题考查的知识点是:重载增1运算符“++”。++既可以是前缀运算符(前增1),又可以是后缀运算符(后增1)。为了区分这两种情况,重载这两个运算符时必须在格式上有所区别:重载后缀++时必须多一个虚拟参数:int。在本题中,Point& operator++()重载的是前缀形式,而Point operator++(int)则是后缀形式。所以,主函数中第1条输出语句cout<<(++a).GetX();等价于cout<<a.operator++().GetX();,即输出 11,此时a.x的值为11。而第2条输出语句cout<<a++.GetX();等价于cout<< a.operator++(0).GetX();(式中的0可以是任意整数),在这个后缀++的重载函数中,首先创建了一个Point对象old保存自身(*this),然后通过语句++(*this];调用前缀++的重载函数,此时自身虽然已经改变,但它返回的是改变前保存的old对象,因此还是输出11。故本题应该选择B。
转载请注明原文地址:https://www.kaotiyun.com/show/RWAp777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
有以下程序:#include<iostream>usingnamespacestd;classMyClass{public:MyClass();~MyClass();
下面语句段的输出结果是【】。intx=0,y=2,z=3;switch(x){case0:switch(y){case1:cout<<’*’;break;
若a是float型变量,且a=6,则表达式“a/2+(int)(a+1)%2”的值为【】。
对类成员访问权限的控制,是通过设置成员的访问控制属性实现的,下列不是访问控制属性的是
下面关于数组的初始化正确的是
下面程序的运行结果为#include<iostream.h>voidmain(){for(inta=0,x=0;!x&&a<=10;a++){a++;
设有定义intx;floaty;,则10+x+y值的数据类型是
根据下面的主程序,完成类的一种构造函数的最简单形式。#include<iostream.h>classbase{private:intnum;public:【 】;};voidmain(){basetry
下列有关运算符重载的叙述中,正确的是()。
随机试题
婴儿颅压增高的主要标志是( )。
对于增加建筑容积率来说,补地价的总价可以用下列公式计算:补地价(总价)=()×()。
(2010年)设随机变量X的概率密度为则P(0≤X≤3)等于()。
对野外实地检查项,可抽样检查,当批量数在≤20a时样本量为()。
建筑工程一切险的保险期终止时间可以是( )日。
根据公司法律制度的规定,持有有限责任公司全部股东表决权10%以上的股东,在发生某些法定事由时,可以提起解散公司的诉讼,人民法院应予受理。下列各项中,属于该法定事由的有()。
Johnsaidthathedidn’tquite______andaskedmetorepeatwhatIhadsaid.
如果字段“评价”的取值范围为0~10,则下列关于有效性规则的选项中,错误的是
Sometimeago,Idiscoveredthatoneofthechairsinmyfronthallhadabrokenleg.Ididn’tforeseeanygreatdifficultyin
A、HistoryofsurnamesinAmerica.B、Feministmovementinthe1960s.C、TraditionalsurnamesinEurope.D、Reasonsforinventingsu
最新回复
(
0
)