1、国家二级(C+)机试模拟试卷 161 及答案解析(总分:86.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.下列数据结构中,不能采用顺序存储结构的是( )。(分数:2.00)A.非完全二叉树B.堆C.队列D.栈2.下列叙述中错误的是( )。(分数:2.00)A.二叉链表是二叉树的存储结构B.循环链表是循环队列的存储结构C.栈是线性结构D.循环队列是队列的存储结构3.设一棵树的度为 4,其中度为 4,3,2,1 的结点个数分别为 2,3,3,0。则该棵树中的叶子结点数为( )。(分数:2.00)A.16B.15C.17D.不可能有这样的树4.循环队列的存储空间为 Q
2、(1:100),初始状态为 front=rear=100。经过一系列正常的入队与退队操作后,front=rear=99,则循环队列中的元素个数为( )。(分数:2.00)A.1B.2C.99D.0 或 1005.某系统结构图如下图所示 (分数:2.00)A.5B.4C.2D.16.软件测试用例包括( )。(分数:2.00)A.被测程序和测试规程B.测试计划和测试数据C.输入数据和预期输出结果D.输入数据和输出数据7.软件生存周期中,解决软件“怎么做”的阶段是( )。(分数:2.00)A.软件设计B.需求分析C.软件测试D.可行性研究8.用树型结构表示实体之间联系的模型是( )。(分数:2.00
3、)A.关系模型B.层次模型C.网状模型D.运算模型9.关系数据模型的三个组成部分中不包括( )。(分数:2.00)A.关系的完整性约束B.关系的数据操纵C.关系的数据结构D.关系的并发控制10.现有表示患者和医疗的关系如下:P(P#,Pn,Pg,By),其中 P#为患者编号,Pn 为患者姓名,Pg 为性别,By 为出生日期,Tr(P#,D#,Date,Rt),其中 D#为医生编号,Date 为就诊日期,Rt 为诊断结果。检索在 1 号医生处就诊的病人姓名的表达式是( )。(分数:2.00)A. Pn ( P# ( D#=1 (Tr) B. P# ( D#=1 (Tr)C. Pn (P)D. P
4、n (Tr 11.下列选项中,不属于 C+关键字的是( )。(分数:2.00)A.namespaceB.publicC.structD.abstract12.下列数组定义中错误的是( )。(分数:2.00)A.char s5=“ABCDE“;B.char s6=“ABCDE“;C.char s7=“ABCDE“;D.char s=“ABCDE“;13.下列语句中,未起到定义作用的是( )。(分数:2.00)A.char ch;B.void fun();C.int y=2015;D.typedef double price;14.下列程序段的作用是计算正整数 n 的各位数字的平方和,则横线处缺失
5、的内容是( )。in tn=1234,sum=0;dosum+=_;n=n10;while(n!=0);(分数:2.00)A.(n10)*(n10)B.(n10)*(n10)C.(n10)*(n10)D.(n10)15.有如下函数原型 long f(double d);则在保持语义不变的前提下,可以省略的部分是( )。(分数:2.00)A.longB.fC.doubleD.d16.下列关于函数默认参数的叙述中,正确的是( )。(分数:2.00)A.在调用函数时,默认参数必须省略B.默认参数应从右至左逐个定义C.若有多个默认参数,调用时可以省略其中任何一个或多个D.默认参数必须在函数定义中设置1
6、7.下列关于函数的叙述中,正确的是( )。(分数:2.00)A.函数体中只能出现一条 return 语句B.重载函数可以有相同的返回值类型C.函数的默认参数可以随意定义D.函数定义和调用没有先后次序要求18.下列运算符中,可以重载为非成员函数的是( )。(分数:2.00)A.=B.C.D.()19.下列关于内联函数的叙述中,错误的是( )。(分数:2.00)A.编译系统有可能将一个声明为内联的函数处理成非内联函数B.只有用 inline 声明的函数才是内联函数C.在类体中直接给出函数体的函数是内联函数D.调用内联函数的格式与调用一般函数相同20.有如下程序;#includeiostreamus
7、ing namespace std;void hey(_,int&b)int c;c=a;a=b;b=c;int main()int m=14,n=20;hey(m,n);coutmn;return0;运行后的输出结果是“1414”,则横线处的语句应为( )。(分数:2.00)A.int*aB.int&aC.int aD.a21.有如下程序:#includeiostreamusing namespace std;void f(int i)couti ;void f(double d)toutd*2 ;int main()f(30):f(3);return0;运行后的输出结果是( )。(分数:2
8、.00)A.6 3B.60 3C.3 6D.3 6022.有如下程序:#includeiostrealnusing namespace std;class Goods货物类 double unit_price;单价 int quantity;数量 public:Goods(double u=00,int q=0):unit_price(u),quantity(q)double getPrice()constreturn unit_price;返回单价 int getQuantity()constreturn quantity;返回数量增加数量 Goods operator+(int q)con
9、streturn Goods(unit_price,quantity+q);增加数量 Goods operator+(_)return g+q;输出货物信息 0stream&operator(ostream& oS,Goods g)cout“单价:“ggetPrice(),“数量:“ggetQuantity()endl;return os;int main()Goods g(356,100);coutgg+3325+g;return0;若运行后的输出结果是( )。单价:356,数量:100 单价:356,数量:133 单价:356,数量:125 则程序中下划线处缺失部分应该是( )。(分数:2
10、.00)A.Goods q,Goods gB.Goods g,Goods qC.int q,Goods gD.Goods g,int q23.下列关于常成员的叙述中,正确的是( )。(分数:2.00)A.常成员函数只能由常对象调用B.常成员函数不能更新对象的状态C.常数据成员可以被类对象共享D.常数据成员可以在构造函数体中初始化24.有如下类定义:class MyClassint k;public:MyClass(int n):k(n);则下列数组定义中,错误的是( )。(分数:2.00)A.MyClass m44=MyClass(1),MyClass(2),MyClass(3),MyClas
11、s(4);B.MyClass m4=MyClass(1),MyClass(2),MyClass(3);C.MyClass m44=1,2,3;D.MyCtass m4=1,2,3;25.若 count 为类 Toy 中的静态数据成员,obj 为类 Toy 的一个对象,则在该类的成员函数中访问 vount时,错误的是( )。(分数:2.00)A.countB.objcountC.ToycountD.Toy:count26.下列关于继承的叙述中,错误的是( )。(分数:2.00)A.在公有继承中,基类中的公自成员对派生类对象可见B.在私有继承中,基类中的公有成员对派生类对象可见C.在公有继承中,基
12、类中的私有成员对派生类对象不可见D.在私有继承中,基类中的所有成员对派生类对象都不可见27.下列关于抽象类的叙述中,错误的是( )。(分数:2.00)A.不能定义抽象类对象B.抽象类中一定包含纯虚函数C.抽象类的派生类一定不是抽象类D.抽象类的构造函可以是 protected 函数28.派生类构造函数的初始化列表中,可以包含( )。(分数:2.00)A.对基类构造函数的调用B.对基类中数据成员的初始化C.对基类中成员对象的初始化D.对基类中静态数据成员的初始化29.有如下程序段:#includeiostreamusing namespace std;class Apublic:int data
13、;static int data2;void show()coutdataendl:1coutdata2endl:2static void print()coutdataendl:3toutdata2endl:4;int A:data2=8:编译时出错的语句的编号是( )。(分数:2.00)A.1B.2C.3D.430.有如下程序:#includeiostreamusing namespace std;class poolpublic:pool():sum(0)void add(int cur)sum+=cur;int sum;class derived:poolpublic:void add
14、(int*array,int cnt)for(int i=0;icnt;+i)pool:add(arrayi);下列叙述中,正确的是( )。(分数:2.00)A.派生类 derived 实现了对基类 pool 的成员函数 add 的重载B.派生类 derived 是通过公有继承方式进行继承C.编译错误,derived 类无法访问 pool 中的 add 函数D.对函数 add 的调用是多态的31.有如下程序段:#includeiostreamusing namespace std;class basepublic:base(int cnt)resource=new intent;base()d
15、eleteresource;virtual void show()cout“base“endl;int*resource:;class derived:public basepublic:derived(int cnt):base(cnt)resource=new floatcnt;derived()deleteresource;void show()cout“derived“endl;float*resource;上述程序使得 derived 对象中的动态内存空间有可能不被释放,有内存泄漏风险,原因是( )。(分数:2.00)A.base 类是抽象类B.derived 类的析构函数没有释放基
16、类的动态内存C.base 类的析构函数不是虚函数D.derived 类的 reSotlrce 与公有继承得到的 resource 同名32.有如下程序:#includeiostreamclass Apublic:A(int n=2):m_i(n)A()std:coutm_i;protected:int m_i;class B:public Apublic:B(int n):m_a2(n),m_al(m_i+1)public:B()std:coutm_i;-m_i;private:A m_a1;A m_a2:;int main()B b(5);return0;运行后的输出结果是( )。(分数:2
17、.00)A.2351B.2531C.5354D.553433.有如下程序:#ineludeiostreamclass Apublic:A(int n=0):m_n(n)std:coutd;A(const A& a):m_n(am_n)std:coutc;private:int m_n;int main()A a(2),b;const A c(a),&d=c,e=b;b=d;return0;运行后的输出结果是( )。(分数:2.00)A.ddcdB.ddccC.ddccdD.dddcc34.有如下程序:#includeiostreamusing namespace std;class Rpubl
18、ic:R(int r1,int r2):r1(r1),r2(r2)void print();void print()const;private:int r1,r2;void R:print()coutr1“:“r2endl;void R:print()constcoutr1“r2endl;int main()R a(5,4);aprint();const R b(20,52);bprint();return0;运行后的输出结果是( )。(分数:2.00)A.5:4 20,52B.5:4 20:52C.5,4 20,52D.5,4 20:5235.有如下程序:#includeiostreamus
19、ing namespace std;class Basepublic:Base()Fuction();virtual void Fuction()cout“Base:Fuction“endl:;class Derived:public Basepublic:Derived()Fuction();virtual void Fuction()cout“Derived:Fuction“endl:;int main()Derived a;return0;运行后的输出结果是( )。(分数:2.00)A.Base:Function Derived:FunctionB.Base:Function Base:
20、FunctionC.Derived:FunctionD.Base:Function36.有如下程序:#includeiostreamusing namespace std;class Vehiclepublic:virtual int wheels()constreturn0;class Car:public Vehiclepublic:int wheels()constreturn4;void f1(Vehicle v)coutvwheels() ;void f2(Vehicle &V)coutvwheels() ;void f3(Vehicle*pv)coutpv-wheels() ;in
21、t main()Car c;f1(c);f2(c);f3;(&c);return0;运行后的输出结果是( )。(分数:2.00)A.4 4 4B.0 4 4C.4 0 4D.4 4 037.下列关于模板参数的叙述中,错误的是( )。(分数:2.00)A.模板参数可以有多个B.模板参数是参数化的类型C.关键字 class 可以修饰模板参数D.模板参数可以是一个算术表达式38.已知函数模板定义如下:templateclass TT min(T x,T y)return xy x:y;不能由该函数模板得到的函数实例是( )。(分数:2.00)A.int min(int,int)B.char min(
22、char,char)C.double min(int,double)D.double min(double,double)39.为了使用 setw 设置输出宽度,必须在程序中包含头文件( )。(分数:2.00)A.iostreamB.iomainpC.fstreamD.string40.下列文件流类的成员函数中,对文件进行写操作的是( )。(分数:2.00)A.readB.writeC.getD.tellg二、基本操作题(总题数:1,分数:2.00)41.请使用 VC6 或使用【答题】菜单打开考生文件夹 proj1 下的工程 proj1,该工程含有一个源程序文件proj1cpp。其中位于每个注
23、释“ERROR *found*”之后的一行语句存在错误。请改正这些错误,使程序的输出结果为:The value is10 注意:只修改注释“ERROR *found*”的下一行语句,不要改动程序中的其他内容。proj1cpp#includeiostrearnusing namespace std;class NyClassint value;public:ERROR*found*void MyClass(int val):value(val)int GetValue()constreturn value;void SetValue(int val);ERROR *found*inline vo
24、id SetValue(int val)value=val:int main()MyClass obj(0);objSetValue(10);ERROR*found*下列语句功能是输出 obj 的成员 value 的值cout“The value is“objvalueend1;return0;(分数:2.00)_三、简单应用题(总题数:1,分数:2.00)42.请使用 VC6 或使用【答题】菜单打开考生文件夹 proj2 下的工程 proj2。此工程中包含一个源程序文件 maincpp,其中有“房间”类 Room 及其派生出的“办公室”类 Office 的定义,还有主函数 main 的定义。
25、请在程序中“*found*”下的横线处填写适当的代码并删除横线,以实现上述类定义。此程序的正确输出结果应为:办公室房间号:308 办公室长度:56 办公室宽度:48 办公室面积:2688 办公室所属部门:会计科注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“*found*”。#jncludeiostreamusing namespacestd;class Room“房间”类 int room_no;房间号 double length;房间长度(m)double width;房间宽度(m)public:Room(int the_room_no,double the_
26、length,double the_width):room_no(the_room_no),length(the_length),width(the_width)int theRoomNo()constreturn roomn_o;返回房间号 double theLength()constreturn length;返回房间长度 double theWidth()constreturn width;返回房间宽度*found*double theArea()const_返回房间面积(矩形面积);class Office:public Room“办公室”类 char*depart;所属部门 pub
27、lic:Office(int the_room_no,doublethe_length,double the_width,const char*the_depart)*found*:_depart=new charstrlen(the_depart)+1;*found*strcpy(_);Office()deletedepart;const char,IctheDepartment()constreturn depart;返回所属部门;int main()*found*Office_;cout“办公室房间号:“an_officetheRoomNo()endl“办公室长度:“an_officet
28、heLength()endl“办公室宽度:“an_officetheWidth()endl“办公室面积:“an_officetheArea()endl“办公室所属部门:“an_officetheDepartment()endl;return0;(分数:2.00)_四、综合应用题(总题数:1,分数:2.00)43.使用 VC6 打开考生文件夹 proj3 下的工程 proj3,其中声明了 MyString 类,它是一个用于表示字符串的类。成员函数 reverse 将字符串反转,例如“abcde”反转后就成了“edcba”。请补充完整函数reverse。在 main 函数中给出了一个测试数据,此情
29、况下程序的输出应该是:This is a stringgnirts a si sihT 注意:只需在函数 reverse 的*333*和*666*之间填入若干语句,不要改动程序中的其他内容。MyStringh#includeiostreamusing namespace std;char*dup(const char*);class MyStringchar*str:public:MyString(const char*s=“ “):str(dup(s)MyString(const MyString&m):str(dup(mstr)MyString()deletestr;void revers
30、e();void show(ostream &os=cout)constosstrendl;inline ostream&operator(ostream&os,const MyString&m)mshow(os);return os;void writeToFile(const char*path);MyStringcpp#include“MyStringh“char*dup(constchar*s)char*p=new charstden(s)+1;strcpy(p,s);return p;void MyString:reverse()*333*666*void writeToFile(c
31、onst char*path);writetoFilecpp#includefstream#include“MyStringh“void writeToFile(const char*path)char full50;strcpy(full,path);strcat(full,“outdat“);ofstream outfile(full);if(outfilefail()CelT“打开输出文件失败!“;return;MyString m1=“This is another string“:MyString m2(“字符串反转演示“);outfilem1m2;m1reverse();m2rev
32、erse();ouffilem1m2:outfileclose();(分数:2.00)_国家二级(C+)机试模拟试卷 161 答案解析(总分:86.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.下列数据结构中,不能采用顺序存储结构的是( )。(分数:2.00)A.非完全二叉树 B.堆C.队列D.栈解析:解析:根据完全二叉树的性质 6,满二叉树和完全二叉树可以按层序进行顺序存储,但一般的二叉树不适用。堆可以用一维数组来存储也可以用完全二叉树来直观地表示堆的结构。队列、栈本身就是顺序存储的。故本题答案为 A 选项。2.下列叙述中错误的是( )。(分数:2.00)A.二
33、叉链表是二叉树的存储结构B.循环链表是循环队列的存储结构 C.栈是线性结构D.循环队列是队列的存储结构解析:解析:循环队列是队列的一种顺序存储结构,用队尾指针 rear 指向队列中的队尾元素,用排头指针 front 指向排头元素的前一个位置。循环链表是用不连续的存储单元存储数据,它有一个表头结点,队头指针指向表头结点,最后一个结点的指针域指向表头结点。二叉链表是树的二叉链表实现方式。栈是一种特殊存取方式的线性表。故本题答案为 B 选项。3.设一棵树的度为 4,其中度为 4,3,2,1 的结点个数分别为 2,3,3,0。则该棵树中的叶子结点数为( )。(分数:2.00)A.16 B.15C.17
34、D.不可能有这样的树解析:解析:根据题目,树的结点数=42+33+23+10+根结点=8+9+6+0+1=24,即总结点数为 24,总结点数减去度不为 O 的结点数即是叶子结点,24-(2+3+3)=16。故本题答案为 A 选项。4.循环队列的存储空间为 Q(1:100),初始状态为 front=rear=100。经过一系列正常的入队与退队操作后,front=rear=99,则循环队列中的元素个数为( )。(分数:2.00)A.1B.2C.99D.0 或 100 解析:解析:在循环队列中,用队尾指针 rear 指向队列中的队尾元素,用排头指针 front 指向排头元素的前一个位置。在循环队列中
35、进行出队、人队操作时,头尾指针仍要加 1,朝前移动。只不过当头尾指针指向向量上界时,其加 1 操作的结果是指向向量的下界 0。由于人队时尾指针向前追赶头指针,出队时头指针向前追赶尾指针,故队空和队满时,头尾指针均相等。故本题答案为 D 选项。5.某系统结构图如下图所示 (分数:2.00)A.5 B.4C.2D.1解析:解析:系统结构图的宽度指整体控制跨度(横向最大模块数)的表示。本题中,模块数最多的是第 3层,即“功能 XX”的模块个数就是宽度,有 5 个。故本题答案为 A 选项。6.软件测试用例包括( )。(分数:2.00)A.被测程序和测试规程B.测试计划和测试数据C.输入数据和预期输出结
36、果 D.输入数据和输出数据解析:解析:测试用例(Test Case)是为测试设计的数据,由测试输入数据和与之对应的预期输出结构两部分组成。故本题答案为 C 选项。7.软件生存周期中,解决软件“怎么做”的阶段是( )。(分数:2.00)A.软件设计 B.需求分析C.软件测试D.可行性研究解析:解析:软件设计是软件工程的重要阶段,是一个把软件需求转换为软件表示的过程。软件设计的基本目标是用比较抽象概括的方式确定目标系统如何完成预定的任务,即解决软件“怎么做”的问题。故本题答案为 A 选项。8.用树型结构表示实体之间联系的模型是( )。(分数:2.00)A.关系模型B.层次模型 C.网状模型D.运算
37、模型解析:解析:用树形结构表示实体及其之间联系的模型称为层次模型。在层次模型中,结点是实体,树枝是联系,从上到下是一对多的关系。故本题答案为 B 选项。9.关系数据模型的三个组成部分中不包括( )。(分数:2.00)A.关系的完整性约束B.关系的数据操纵C.关系的数据结构D.关系的并发控制 解析:解析:关系数据模型的三个组成部分:数据结构,操作集合(数据操纵),完整性约束。故本题答案为 D 选项。10.现有表示患者和医疗的关系如下:P(P#,Pn,Pg,By),其中 P#为患者编号,Pn 为患者姓名,Pg 为性别,By 为出生日期,Tr(P#,D#,Date,Rt),其中 D#为医生编号,Da
38、te 为就诊日期,Rt 为诊断结果。检索在 1 号医生处就诊的病人姓名的表达式是( )。(分数:2.00)A. Pn ( P# ( D#=1 (Tr) B. P# ( D#=1 (Tr)C. Pn (P)D. Pn (Tr 解析:解析: 表示投影运算,针对属性; 表示选择运算,针对元组; 表示自然连接。首先在Tr 表中选择 D#为 1 的记录 D#=1 (Tr),并检索这些记录中患者的编号 P# ( D# (Tr),检索结果与表 P 进行自然连接生成中间表 P# ( D#=1 (Tr) P,最后在中间表中检索患者的姓名 Pn ( P# ( D#=1 (Tr) 11.下列选项中,不属于 C+关键
39、字的是( )。(分数:2.00)A.namespaceB.publicC.structD.abstract 解析:解析:namespace 是定义命名空间的关键字,选项 A 正确;public 关键字在类定义体中指定公共成员,在类继承体系中指定公有继承,选项 B 正确;struct 关键字定义结构体类型,选项 C 正确;adstruct 不属于 C+关键字,选项 D 错误。故本题答案为 D 选项。12.下列数组定义中错误的是( )。(分数:2.00)A.char s5=“ABCDE“; B.char s6=“ABCDE“;C.char s7=“ABCDE“;D.char s=“ABCDE“;解
40、析:解析:常量字符串“ABCDE”中,结尾还保存一个空字符0,总共有 6 个字符,所以字符数组 s使用常量字符串初始化时,s 的数组大小必须大于等于 6,选项 B、C 正确;另外在对字符数组初始化时,若省略数组长度,系统会默认将数组长度设置为常量字符串的长度 6,选项 D 正确;选项 A 中数组长度 5不够容纳该常量字符串,所以 A 错误。故本题答案为 A 选项。13.下列语句中,未起到定义作用的是( )。(分数:2.00)A.char ch;B.void fun(); C.int y=2015;D.typedef double price;解析:解析:选项 A 定义一个字符变量 ch;选项
41、C 定义整型 y,并初始化为 2015;选项 D 定义一种类型名 price,该类型等价于 double;选项 B 声明了函数 fun,该函数没有参数,没有返回值,声明不是定义,选项 B 错误。故本题答案为 B 选项。14.下列程序段的作用是计算正整数 n 的各位数字的平方和,则横线处缺失的内容是( )。in tn=1234,sum=0;dosum+=_;n=n10;while(n!=0);(分数:2.00)A.(n10)*(n10) B.(n10)*(n10)C.(n10)*(n10)D.(n10)解析:解析:题意要求计算正整数 n 的各个数字的平方和,并将平方和存放到 sum 中,所以首先
42、需要获取n 的各个位上的数字,程序通过 dowhile()循环,每次循环取出 n 的一位数字,数字平方后累加到 sum中,然后语句 n=n10 将 n 的个位数字去掉,并将去掉个位数字的值重新赋给 n,进入下一轮循环,直到n 为 0,可知:横线部分需要在 n 去掉个位数字前,得到 n 的个位数字并平方,累加到 sum 中,要想获得一个正整数的个位数字,只需要将 n 对 10 求模即可,所以答案为(n10)*(n10)。故本题答案为 A 选项。15.有如下函数原型 long f(double d);则在保持语义不变的前提下,可以省略的部分是( )。(分数:2.00)A.longB.fC.doub
43、leD.d 解析:解析:由语句:long f(long d);可知:第一个 long 表示函数的返回值;f 表示函数名;第二个long 表示参数类型;d 表示参数名;又由语句最后的分号可知:这条语句是一个函数声明语句,在函数声明语句中,可以省略参数名,所以本题可以省略参数名 d。故本题答案为 D 选项。16.下列关于函数默认参数的叙述中,正确的是( )。(分数:2.00)A.在调用函数时,默认参数必须省略B.默认参数应从右至左逐个定义 C.若有多个默认参数,调用时可以省略其中任何一个或多个D.默认参数必须在函数定义中设置解析:解析:函数参数中,如果有一个形参是默认参数,那么它后面所有的形参都必
44、须是默认参数,也就是说默认参数应自右至左逐个定义,选项 B 正确;调用包含默认参数的函数时,可以为该形参提供实参,也可以不提供,选项 A 错误;若有多个默认参数,在函数调用时,其中一个参数使用了默认值,那么后面所有的参数都必须使用默认值,选项 C 错误;既可以在函数声明也可以在函数定义中指定默认参数,但是一个文件中,只能为一个形参指定默认参数一次,选项 D 错误。故本题答案为 B 选项。17.下列关于函数的叙述中,正确的是( )。(分数:2.00)A.函数体中只能出现一条 return 语句B.重载函数可以有相同的返回值类型 C.函数的默认参数可以随意定义D.函数定义和调用没有先后次序要求解析
45、:解析:函数可以有多条 return 语句,但只有一条语句被执行,选项 A 错误;出现在相同作用域中的两个函数,如果具有相同的函数名,而形参表不同,称为重载函数,所以重载函数可以有相同的返回值类型,选项 B 正确;函数参数中,如果有一个形参是默认参数,那么它后面所有的形参都必须是默认参数,也就是说默认参数应自右至左逐个定义,而不能随便定义,选项 C 错误;函数和变量一样,在调用(使用)前必须先定义,选项 D 错误。故本题答案为 B 选项。18.下列运算符中,可以重载为非成员函数的是( )。(分数:2.00)A.=B. C.D.()解析:解析:赋值操作符=、下标操作符和箭头操作符一必须定义为类成员函数,而输入输出操作符可以定义为非成员函数。故本题答案为 B 选项。19.下列关于内联函数的叙述中,错误的是( )。(分数:2.00)A.编译系统有可能将一个声明为内联的函数处理成非内联函数B.只有用 inline 声明的函数才是内联函数 C.在类体中直接给出函数体的函数是内联函数D.调用内联函数的格式与调用一般函数相同解析:解析:内联函数的内联说明对于编译器来说只是一个建议,编译器可以选择忽略这个建议,所以编译系统有可能将