1、二级 C+新增无纸化真题 2015 年(2)及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:40.00)1.下列叙述中正确的是_。(分数:1.00)A.数据的存储结构会影响算法的效率B.算法设计只需考虑结果的可靠性C.算法复杂度是指算法控制结构的复杂程度D.算法复杂度是用算法中指令的条数来度量的2.设数据集合为 D=1,2,3,4,5。下列数据结构 B=(D,R)中为非线性结构的是_。(分数:1.00)A.R=(1,2),(2,3),(3,4),(4,5)B.R=(1,2),(2,3),(4,3),(3,5)C.R=(5,4),(4,3),(3,2),(2
2、,1)D.R=(2,5),(5,4),(3,2),(4,3)3.某二叉树共有 150 个结点,其中有 50 个度为 1 的结点,则_。(分数:1.00)A.不存在这样的二叉树B.该二叉树有 49 个叶子结点C.该二叉树有 50 个叶子结点D.该二叉树有 51 个叶子结点4.循环队列的存储空间为 Q(1:50),初始状态为 front=rear=50。经过一系列正常的入队与退队操作后,front=rear=25,此后又正常地插入了一个元素,则循环队列中的元素个数为_。(分数:1.00)A.51B.50C.49D.15.下列排序方法中,最坏情况下时间复杂度(即比较次数)低于 O(n 2 )的是_。
3、(分数:1.00)A.快速排序B.简单插入排序C.冒泡排序D.堆排序6.下面描述正确的是_。(分数:1.00)A.软件测试是指动态测试B.软件测试可以随机地选取测试数据C.软件测试是保证软件质量的重要手段D.软件测试的目的是发现和改正错误7.下面图中属于软件设计建模工具的是_。(分数:1.00)A.DFD 图(数据流程图)B.程序流程图(PFD 图)C.用例图(USE_CASE 图)D.网络工程图8.数据库(DB)、数据库系统(DBS)和数据库管理系统(DBMS)之间的关系是_。(分数:1.00)A.DB 包括 DBS 和 DBMSB.DBMS 包括 DB 和 DBSC.DBS 包括 DB 和
4、 DBMSD.DBS、DB 和 DBMS 相互独立9.医院里有不同的科室,每名医生分属不同科室,则实体科室与实体医生间的联系是_。(分数:1.00)A.一对一B.一对多C.多对一D.多对多10.有 3 个关系 R、S 和 T 如下: R A B C a 3 4 b 2 1 c 3 2 e 4 2 S A B C d 3 2 c 3 2 T A B C a 3 4 b 2 1 e 4 2 则由关系 R 和 S 得到关系 T 的操作是_。(分数:1.00)A.投影B.选择C.交D.差11.下列选项中,错误的 C+表达式是_。(分数:1.00)A.a+B.“b“=10C.double(3/5)D.x
5、+!=3|y12.执行语句“for(int i=0, x=0; !x i+);”时,for 循环的循环次数是_。(分数:1.00)A.1B.5C.6D.无限13.下列字符串中不能作为 C+标识符使用的是_。(分数:1.00)A.IN25B.testC._1481D.12314.有如下程序: #includeiostream using namespace std; int main() int sum=0; for(int i=1; i4; i+) fbr(int j=i; j4; j+)sum+=j; coutsumendl; return 0; 运行时的输出结果是_。(分数:1.00)A.
6、15B.17C.16D.1415.下列关于设置函数参数默认值的叙述中,正确的是_。(分数:1.00)A.不能为类构造函数的参数设置默认值B.函数参数默认值只能在定义函数时设置C.设置函数参数默认值时,应该为参数表中全部参数都设置D.设置函数参数默认值时,应该从参数表中最右边的参数开始设置16.如果要通过函数实现一种不太复杂的功能,并且要求较快的函数调用速度,则应选用_。(分数:1.00)A.内联函数B.重载函数C.递归函数D.嵌套函数17.下列运算符中,只能作为类成员函数重载的是_。(分数:1.00)A.:B.=C.-D.18.下列关于运算符重载的表述中,错误的是_。(分数:1.00)A.不能
7、为运算符重载函数改变其运算符原有的优先级B.有的运算符只能作为成员函数重载C.能够为运算符重载函数改变其运算符原有的运算目数D.有的运算符可以作为非成员函数重载19.下列关于运算符函数的表述中,错误的是_。(分数:1.00)A.运算符函数的参数表可能是空的B.运算符函数只能定义为类的成员函数C.运算符函数的名称是以 operator 为前缀的D.运算符函数的参数可以是对象20.有如下程序; #includelostream using namespace std; void fun(int c=a; a=b; b=c; int main() int x=14, y=20; fun(x, y);
8、 coutxy; return 0; 运行后的输出结果是“2020”,则横线处的语句应为_。(分数:1.00)A.bB.int bC.int*bD.im /运算符的声明 private: int year, month, day; ; 若要使语句序列 Date GoodDay; coutGoodDayendl; 能够正常运行,横线处的内容应为_。(分数:1.00)A.istream A(int x) data=x; A() int GetData() const return data; void SetData(int n) data=n; private: int data; ; cons
9、t A a(5); A b(8); 下列函数调用中错误的是_。(分数:1.00)A.a.GetData();B.a.SetData(10);C.b.GetData();D.b.SetData(10);26.C+中设置虚基类的目的是_。(分数:1.00)A.简化程序B.消除二义性C.提高运行效率D.实现数据的隐藏性27.下列选项中,调用虚函数时可能产生动态联编的是_。(分数:1.00)A.对象名B.派生类名C.基类指针D.派生类指针28.通过派生类的对象可直接访问的是_。(分数:1.00)A.公有继承基类中的公有成员B.私有继承基类中的公有成员C.公有继承基类中的保护成员D.私有继承基类中的保护
10、成员29.有如下类定义: class Bag public: Bag(int p, char s=“M“):price(p), size(s) count+; Bag()count-; int GetPrice() return price; int GetPrice() const return price; void SetPrice(int val) const price=val; private: int price; char size; static int count; ; 下列关于类成员的叙述中,正确的是_。(分数:1.00)A.成员函数 GetPrice 存在重定义B.构造
11、函数的参数不能设置默认值C.析构函数中不能访问静态数据成员D.成员函数 SetPrice 不能定义为常函数30.有如下程序: #includeiostream using namespace std; class Bag public: Bag(int p, char s=“M“):price(p), size(s) void Show()coutprice“-“size“; _coutprice“*“size“; private: int price; char size; ; int main() Bag Black(150, “S“); const Bag White(300, “L“)
12、; Black.Show(); White.Show(); return 0; 若运行时的输出结果为“150-S 300*L”,则划线处缺失的部分是_。(分数:1.00)A.void Show()constB.void Show(const)C.void const Show()D.eonst void Show()31.有如下程序: #includeiostream using namespace std; class Equipment public: Equipment() cout“E“; ; class Monitor public: Monitor() cout“M“; ; cla
13、ss Computer:public Equipment public: Computer() cout“C“; private: Monitor m; ; int main() Computer c; return 0; 运行时的输出结果是_。(分数:1.00)A.CEMB.CMEC.EMCD.MEC32.有如下程序: #includeiostream using namespace std; class Power public: Power(int x):val(x) _ protected: int val; ; class Square:public Power public: Sq
14、uare(int x):Power(x) void Display() coutval“的平方是“val*valendl; ; int main() Power*p=new Square(3); p-Display(); delete p; return 0; 若运行时的输出结果为“3 的平方是 9”,则划线处缺失的语句可能是_。(分数:1.00)A.void Display()B.virtual void Display()=0C.void virtual Display()=0;D.void Display()virtual 33.有如下程序: #includeiostream #incl
15、udestring using namespace std; class MyBag public: MyBag(string br, string cr):brand(br), color(cr)+count; static int GetCount()return count; private: string brand, color; static int count; ; int MyBag:count=0; int main() MyBag one(“CityLife“, “Gray“); coutone.GetCount(); MyBag*ptr=new MyBag(“Coach“
16、, “Black“); coutMyBag:GetCount(); return 0; 运行时的输出结果是_。(分数:1.00)A.12B.21C.22D.1134.有如下程序: #includeiostream using namespace std; class Point public: Point(int xx, int yy):x(xx), y(yy) int Getxy()return x+y; private: int x, y; ; class Circle:public Point public: Circle(int r, int x=0, int y=0):Point(x
17、, y), radius(r) private: int radius; ; int main() Circle a(6, 5, 4), b(4, 3, 2); couta.Getxy()+b.Getxy(); return 0; 此程序运行后的输出结果为_。(分数:1.00)A.15B.14C.9D.2435.有如下程序: #includeiostream using namespace std; class Point public: Point(int xx=0, int yy=0); x(xx), y(yy) void SetX(int xx) x=xx; void SetY(int
18、yy) y=yy; private: int x, y; ; class Circle:public Point public: Circle(int r):radius(r) int GetRadius() return radius; protected: void SetRadius(int r) radius=r; private: int radius; ; int main() Circle c1(5); c1.SetX(1);/ c1.SetY(2);/ c1.SetRadius(6);/ coutc1.GetRadius(); / return 0; 在标注号码的语句行中存在语
19、法错误的是_。(分数:1.00)A.B.C.D.36.下列关函数模板和模板函数的叙述中,错误的是_。(分数:1.00)A.函数模板是定义重载函数的一种工具B.函数模板的实例化过程是不可见的C.模板函数是函数模板的一个实例D.函数模板是一组函数的样板37.下列关于类模板的叙述中,错误的是_。(分数:1.00)A.类模板描述的是一组类B.可以为类模板的参数设置默认值C.类模板的成员函数可以是函数模板D.定义类模板时只允许有一个模板参数38.下列 C+流的操作符中,能够设置下一个数据的输出宽度的操作符是_。(分数:1.00)A.showpointB.setwC.setfillD.setprecisi
20、on39.有如下程序: #includeiostream #includestring using namespace std; class Instrument public: Instrument(string t, string n):type(t), name(n) virtual string GetType() const return type; virtual string GetName() const return name; protected: string type, name; ; class Piano:public Instrument public: Pian
21、o(string n=“AB“, string t=“CD“):Instrument(n, t) string GetType() const return “WX“; string GetName() const return “YZ“; ; int main() Instrument *pi=new Piano(); coutpi-GetType()“-“pi-GetName()endl; delete pi; return 0; 运行时的输出结果是_。(分数:1.00)A.WX-ABB.YZ-WXC.WX-CDD.WX-YZ40.有如下类定义: class Person public:
22、void SetAge(double val); private: double Age; ; 若要在类体外给出对成员函数 SetAge 的定义,下列选项中正确的是_。(分数:1.00)A.Person:SetAge(double val) Age=val;B.void Person:SetAge(double val)Age=val;C.Person:void SetAge(double val)Age=val;D.void:SetAge(double val)Age=val;二、基本操作题(总题数:1,分数:18.00)41.请使用菜单命令或直接使用 VC6 打开 下的工程 proj1。程
23、序中位于每个/ERROR*found*下的语句行有错误,请加以更正,不得修改程序的其他部分。更正后程序的输出应该是:两点之间的距离为:7.5231 注意:只能修改每个/ERROR *found*下的那一行,不要改动程序中的其他内容。 #include iostream #includecmath using namespace std; class Point private: double x, y; public: Point(double xx, double yy) x=xx; y=yy; /ERROR *found* double MyDistance(Point ; double
24、MyDistance(Point /ERROR *found* double dy=a.y-y; retum sqrt(dx*dx+dy*dy); int main() Point p1(3.6, 6.4), p2(8, 0.3); double d=MyDistance(p1, p2); cout“两点之间的距离为:”dendl; return 0; (分数:18.00)_三、简单应用题(总题数:1,分数:18.00)42.请使用菜单命令或直接用 VC6 打开 下的工程 proj2,实现一个自定义的字符串类 MyString,重载取下标操作符(),使类的对象能够通过下标取字符串的某位元素。如
25、果下标越界,则返回第个元素的值。 请在程序中/*found*之下一行的横线处填写适当的代码,并删除横线,使程序完整、正确。 输出结果为: s t #includeiostream #includecstring using nmnespace std; class MyString private: char*str; public: MyString(char*s) /*found* str=new_; strcpy(str, s); MyString() /*found* _; char ; char /*found* return_; int main() MyString test(“
26、test string“); couttest5endl; couttest13endl; return 0; (分数:18.00)_四、综合应用题(总题数:1,分数:24.00)43.请使用菜单命令或直接用 VC6 打开 下的工程 prj03。请完善下列程序,实现一个 Number 类。Add 函数计算 2 个 Number 类对象之和,并将和作为 Number 对象返回。这 2 个 Number 对象中各包含一个用字符串表示的 10 进制正整数,均不超过 int 的表示范围。在 main 函数中给出了一组测试数据,使用这组数据进行测试时程序的输出应该是: 100 注意:只需在/*333*和
27、/*666*之间填入所编写的若干语句,不要改动程序中的其他内容。 #includeiostream #includecstring #includesstream #include “proj3.h“ using namespace std; Number:Number(char*n) num=new charstrlen(n)+1; strcpy(num, n); Number:Number(Number strcpy(num, n.num); Number:Number(int n) char*tmp=new char30; itoa(n, tmp, 10); /函数 itoa 的功能是将
28、 n 转换为字符串,存放于 tmp 指向的数组中 num=new charstrlen(tmp)+1; strcpy(num, tmp); Number:Number() if(num) deletenum; Number Number:Add(Number n) /*333* /*666* nt main() Number num1(“32“); Number num2(“68“); Number coutnum3.GetNum(); writeToFile(“c:/test“); return 0; /proj3/proj3.h class Number private: char*num
29、; /具体数字,num0表示最高位的数 public: Number(); Number(char*n); Number(Number Number(int n); Number Add(Number n); char*GetNum()return num; ; void writeToFile(const char*path); (分数:24.00)_二级 C+新增无纸化真题 2015 年(2)答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:40.00)1.下列叙述中正确的是_。(分数:1.00)A.数据的存储结构会影响算法的效率 B.算法设计只需考虑结果
30、的可靠性C.算法复杂度是指算法控制结构的复杂程度D.算法复杂度是用算法中指令的条数来度量的解析:解析 算法的基本特征包括可行性、确定性、有穷性、足够的初始信息,算法的设计必须考虑到算法的复杂度,故 B 选项错误。算法的复杂度是指该算法所需要的计算机资源的多少,即时间和空间的资源,分为时间复杂度和空间复杂度。算法控制结构在具体实现中影响程序执行时间,与算法复杂度无关,故 C 选项错误。算法的时间复杂度是用算法所执行的基本运算次数来度量的,而不是算法中指令的条数,故 D 选项错误。数据的存储结构与算法的复杂度有关,会影响算法的效率。故 A 选项正确。2.设数据集合为 D=1,2,3,4,5。下列数
31、据结构 B=(D,R)中为非线性结构的是_。(分数:1.00)A.R=(1,2),(2,3),(3,4),(4,5)B.R=(1,2),(2,3),(4,3),(3,5) C.R=(5,4),(4,3),(3,2),(2,1)D.R=(2,5),(5,4),(3,2),(4,3)解析:解析 一个非空的数据结构如果满足以下两个条件:有且只有一个根结点;每一个结点最多有一个前件,也最多有一个后件,称为线性结构。不同时满足以上两个条件的数据结构就称为非线性结构。B选项中,由(2,3)、(4,3)可知,结点 3 有两个前件 2 和 4,为非线性结构,故选择 B 选项。3.某二叉树共有 150 个结点,
32、其中有 50 个度为 1 的结点,则_。(分数:1.00)A.不存在这样的二叉树 B.该二叉树有 49 个叶子结点C.该二叉树有 50 个叶子结点D.该二叉树有 51 个叶子结点解析:解析 在树结构中,一个结点所拥有的后件个数称为该结点的度。对任何一棵二叉树,度为 0 的结点(即叶子结点)总是比度为 2 的结点多一个。二叉树中有 150 个结点,设叶子结点个数为 n 0 ,度为 1的结点个数为 50,设度为 2 的结点个数为 n 2 。150=n 0 +50+n 2 且 n 0 =n 2 +1,则 n 0 =50.5,n 2 =49.5。由于结点个数必须是整数,所以不存在这样的二叉树,故选择
33、A 选项。4.循环队列的存储空间为 Q(1:50),初始状态为 front=rear=50。经过一系列正常的入队与退队操作后,front=rear=25,此后又正常地插入了一个元素,则循环队列中的元素个数为_。(分数:1.00)A.51B.50C.49D.1 解析:解析 循环队列是队列的一种顺序存储结构,用队尾指针 rear 指向队列中的队尾元素,用排头指针 front 指向排头元素的前一个位置。入队运算时,队尾指针进 1(即 rear+1),然后在 rear 指针指向的位置插入新元素。当 front=rear=25 时可知队列空或者队列满,此后又正常地插入了一个元素说明之前队列为空,所以插入
34、操作之后队列里只有一个元素。故 D 选项正确。5.下列排序方法中,最坏情况下时间复杂度(即比较次数)低于 O(n 2 )的是_。(分数:1.00)A.快速排序B.简单插入排序C.冒泡排序D.堆排序 解析:解析 对长度为 n 的线性表排序,常用排序方法最坏情况的时间复杂度如下表所示 方法 最坏情况时间 冒泡排序 O(n 2 ) 简单插入排序 O(n 2 ) 简单选择排序 O(n 2 ) 快速排序 O(n 2 ) 堆排序 O(nlog 2 n) 时间复杂度低于 O(n 2 )的排序算法是堆排序,故 D 选项正确。6.下面描述正确的是_。(分数:1.00)A.软件测试是指动态测试B.软件测试可以随机
35、地选取测试数据C.软件测试是保证软件质量的重要手段 D.软件测试的目的是发现和改正错误解析:解析 软件测试有多种方法,根据软件是否需要被执行,可以分为静态测试和动态测试,故 A 选项叙述错误。软件测试应在测试之前制定测试计划,并严格执行,排除测试随意性,并且需要设计正确的测试用例,故 B 选项叙述错误。软件测试就是在软件投入运行之前,尽可能多地发现软件中的错误,改正错误是调试的过程,故 D 选项叙述错误。软件测试是保证软件质量的重要手段,故 C 选项正确。7.下面图中属于软件设计建模工具的是_。(分数:1.00)A.DFD 图(数据流程图)B.程序流程图(PFD 图) C.用例图(USE_CA
36、SE 图)D.网络工程图解析:解析 结构化分析方法的常用工具:数据流程图(DFD)、数据字典(DD)、判定表、判定树。常用的过程设计建模工具:图形工具(PFD 图、N-S 图、PAD 图、HIPO)、表格工具(判定表)、语言工具(PDL)。用例图(USE_CASE 图)用于对系统、子系统或类的功能行为进行建模。网络工程图用于网络设备布线。属于软件设计建模工具的是程序流程图(PFD 图),故 B 选项正确。8.数据库(DB)、数据库系统(DBS)和数据库管理系统(DBMS)之间的关系是_。(分数:1.00)A.DB 包括 DBS 和 DBMSB.DBMS 包括 DB 和 DBSC.DBS 包括
37、DB 和 DBMS D.DBS、DB 和 DBMS 相互独立解析:解析 数据库(DB)是指长期存储在计算机内的、有组织的、可共享的数据集合。数据库管理系统(DBMS)是数据库的机构,它是一个系统软件,负责数据库中的数据组织、数据操纵、数据维护、数据控制及保护和数据服务等。数据库系统(DBS)由如下几部分组成:数据库、数据库管理系统、数据库管理员、硬件平台、软件平台,这些构成了一个以数据库管理系统为核心的完整的运行实体。数据库系统包括数据库与数据库管理系统,故 C 选项正确。9.医院里有不同的科室,每名医生分属不同科室,则实体科室与实体医生间的联系是_。(分数:1.00)A.一对一B.一对多 C
38、.多对一D.多对多解析:解析 实体集之间通过联系来建立联接关系分为 3 类:一对一联系(1:1)、一对多联系(1:m)、多对多联系(m:n)。每个科室有多名医生,但每个医生只能在一个科室里,故实体科室和实体医生之间的联系是一对多,因此 B 选项正确。10.有 3 个关系 R、S 和 T 如下: R A B C a 3 4 b 2 1 c 3 2 e 4 2 S A B C d 3 2 c 3 2 T A B C a 3 4 b 2 1 e 4 2 则由关系 R 和 S 得到关系 T 的操作是_。(分数:1.00)A.投影B.选择C.交D.差 解析:解析 投影是指从关系模式中指定若干个属性组成新
39、的关系。从关系中找出满足给定条件的元组的操作称为选择。这两种操作运算均是对单个关系进行,不是两个关系之间的运算,故 A、B 选项错误。交:RS 结果是既属于 R 又属于 S 的记录组成的集合,RS 得到一个元组,按照属性 ABC 的顺序是c32,故 C 选项错误。差:R-S 结果是属于 R 但不属于 S 的记录组成的集合,R-S 得到 3 个元组,按照属性ABC 的顺序是 a34、b21、e42,故 D 选项正确。11.下列选项中,错误的 C+表达式是_。(分数:1.00)A.a+B.“b“=10 C.double(3/5)D.x+!=3|y解析:解析 选项 A 中,使用后缀自增运算符,属于算
40、术表达式,正确;选项 C 中,将 3 除以 5 的结果转换为 double 类型,属于算术表达式,正确;选项 D 中,首先比较 x+是否不等于 3,返回 bool 类型的结果,再与 y 执行逻辑或运算,属于复合表达式,正确;选项 B 中“b“是字符常量,不能作为赋值运算符的左值,语句不合法,答案为 B 选项。12.执行语句“for(int i=0, x=0; !x i+);”时,for 循环的循环次数是_。(分数:1.00)A.1B.5C.6 D.无限解析:解析 for 语句的一般形式为:for(循环变量初始值;循环条件;循环变量增值)语句题目中首先对变量 i 赋值 0,x 赋值 0,然后判断
41、循环条件!x int main() int sum=0; for(int i=1; i4; i+) fbr(int j=i; j4; j+)sum+=j; coutsumendl; return 0; 运行时的输出结果是_。(分数:1.00)A.15B.17C.16D.14 解析:解析 外层 for 循环中,i 的取值为 1、2、3;内层 for 循环中,j 的初始值为 i,所以 i=1 时,j 取值 1、2、3,sum=0+1+2+3=6;i=2 时,i 取值 2、3,sum=6+2+3=11;i=3 时,j 取值3,sum=11+3=14;答案选 D 选项。15.下列关于设置函数参数默认值
42、的叙述中,正确的是_。(分数:1.00)A.不能为类构造函数的参数设置默认值B.函数参数默认值只能在定义函数时设置C.设置函数参数默认值时,应该为参数表中全部参数都设置D.设置函数参数默认值时,应该从参数表中最右边的参数开始设置 解析:解析 类构造函数的参数可以设置默认值,称为默认构造函数,选项 A 错误;函数参数的默认值只能在声明时指定,而不能在定义函数的时候指定参数的默认值,选项 B 错误;对于多个参数的函数,若从某个参数 X 开始设置默认值,那么 X 右边所有的参数都必须设置默认值,而 X 前面的参数则可以不设置默认值,选项 C 错误;所以设置默认值时,需要从参数表的最右边的参数开始设置
43、,答案为 D 选项。16.如果要通过函数实现一种不太复杂的功能,并且要求较快的函数调用速度,则应选用_。(分数:1.00)A.内联函数 B.重载函数C.递归函数D.嵌套函数解析:解析 内联函数是在调用函数处用内联函数体的代码来进行替换,节省函数调用开销,提高函数运行的速度,内联函数的功能相对简单,且不能包含 for、while、switch 语句;C+允许用同一函数名定义多个函数,这些函数的参数个数和参数类型不同,称为重载函数,重载函数只是有相同的函数名;递归函数就是在函数体中直接或间接地调用该函数本身,递归函数使得在解决问题时容易理解,可读性较好,但在时间和空间上的开销较大;嵌套函数包含递归
44、函数,即在调用一个函数的过程中,又去调用另一个函数。所以以上四种函数只有内联函数可以用来实现不太复杂的功能,并且有较快的函数调用速度。答案为A 选项。17.下列运算符中,只能作为类成员函数重载的是_。(分数:1.00)A.:B.= C.-D.解析:解析 C+中不能重载的操作符有:“:”,“.*”,“.”,“?:”,所以选项 A 错误;一般的,将算术操作符定义为非成员函数,如“-”,选项 C 错误;不能将输入输出操作符定义为类的成员函数,因为如果那样做,左操作数就只能是该类类型的对象,这样的用法与正常使用的方式正好相反,所以输入输出操作符左操作数必须为流对象类型,这样就意味着如果该操作符是类的成
45、员,则它必须是istream/ostream 类的成员,又因为 istream/ostream 是标准库的一部分,不能为其增加类成员,所以不能将输入输出操作符定义为类的成员,选项 D 错误;C+中必须作为类成员函数重载的运算符有:=、()、-,将这些操作符定义为非成员函数将在编泽时标记为错误,答案选 B 选项。18.下列关于运算符重载的表述中,错误的是_。(分数:1.00)A.不能为运算符重载函数改变其运算符原有的优先级B.有的运算符只能作为成员函数重载C.能够为运算符重载函数改变其运算符原有的运算目数 D.有的运算符可以作为非成员函数重载解析:解析 重载运算符时,运算符的优先级、结合性或操作数数目不能改变,选项 A 正确;赋值=、下标、调用()、和成员访问箭头-等运算符必须定义为类成员函数,将这些操作符定义为非成员函数会在编译时标记为错误,选项 B 正确;对于算术运算符、相等运算符等,可以定义为非成员函数,选项 D 正确;重载运算符不能改变操作数数目,选项 C 错误。答案为 C 选项。19.下列关于运算符函数的表述中,错误的是_。(分数:1.00)A.运算符函数的参数表可能是空的B.运算符函数只能定义为类的成员函数 C.运