1、二级 C+-11-2 及答案解析(总分:85.50,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:59.50)1.数据库设计中,用 E-R 图来描述信息结构但不涉及信息在计算机中的表示,它属于数据库设计的U /U。 A.需求分析阶段 B.逻辑设计阶段 C.概念设计阶段 D.物理设计阶段(分数:2.00)A.B.C.D.2.设有以下类和对象的定义:class Apublic:int m;;A k1,k2,*p1,*p2;则下面针对成员变量 m 的引用,错误的是U /U。 A.k1.m=1 B.k2m=2 C.p1m=3 D.(*p2).m=4(分数:2.00)A.B.C.D.3.有
2、如下程序:#ncludeiostremnusing namespace std;class Stackpublic:Stack(unsigned n=10:size(n)rep_=new intsize;top=O;Stack(Stackfor(int i=0;isize;i+)rep_i=s.rep_i;top=s.top;Stack()deleterep_;void push(int a)rep_top=a; top+;int opo()-top;return rep_top;bool is Empty()constreturn top=O;pavate:int*rep_;unsigned
3、 size,top;int main()Stack s1;for(int i=1;i5;i+) s1.push(i);Stack s2(s1);for(i=1;i3;i+) couts2.pop(),;s2.push(6);s1.push(7);while(!s2.isEmpty() couts2.pop(),;return 0;执行上面程序的输出是 A.4,3,2,1 B.4,3,6,7,2,1 C.4,3,6,2,1 D.1,2,3,4 (分数:1.00)A.B.C.D.4.有如下程序:#includeiostreamusing namespace std;class Apublic:A(
4、int i)x=i;void dispa()coutx,;pnvate:int x;class B:public Apublic:B(int i):A(i+10)x=i;void dispb()dispa();coutxendl;private:int x:;int main()B b(2);b.dispb();return 0;执行这个程序的输出结果是_。 A.10,2 B.12,10 C.12,2 D.2,2(分数:1.00)A.B.C.D.5.以下程序的输出结果是#includeiostreamhvoid main() int x=1,y=3;cout x+ “ , “; int x=0
5、;X+=y*2;coutx“ ,“y“ ;“;coutx“ ,“y; A.1,6,3,1,3 B.1,6,3,6,3 C.1,6,3,2,3 D.1,7,3,2,3(分数:1.00)A.B.C.D.6.有以下函数:char fun(char*p)return p;)则该函数的返回值是U /U。 A.无确切的值 B.形参 p 中存放的地址值 C.一个临时存储单元的地址 D.形参 p 自身的地址值 (分数:1.00)A.B.C.D.7.已知一函数的形参说明为 int arr56,则与此等效的形参说明为 A. int arr B. int5 C. int*a6 D. int(*a)6(分数:2.00
6、)A.B.C.D.8.下列关于运算符重载的描述中,正确的是 A. 运算符重载可以改变操作数的个数 B. 运算符重载可以改变运算符的优先级 C. 运算符重载可以改变运算符的结合性 D. 运算符重载可以使运算符实现特殊功能(分数:2.00)A.B.C.D.9.设有程序段:int k=10;while(k=0)k=k-1;则下面描述中正确的是U /U。 A.循环执行 10 次 B.无限循环 C.循环体语句一次也不执行 D.循环体语句执行一次(分数:2.00)A.B.C.D.10.对于模板定义关键字 class 和 typename 说法不正确的是U /U。 A.程序中的 class 并不能都替换为
7、typename B.class 和 typename 都可互相替换 C.程序中的 typename 都能替换为 class D.程序中的部分 class 可以替换为 typename(分数:2.00)A.B.C.D.11.下列程序的运行结果是#include iostreamhclass Location private:int X,Y;public:void init(int=0,in=0);Void valueX(int val) X=val;int valueX( ) return X;void valueY(int val) Y=val;int valueY( ) return Y;
8、 ;void Location:init(int initX,int initY) X=initX;Y=initY;void main( ) Location A,B;Ainit( );AvalueX(5);cout AvalueX( ) end1 AvalueY( ) end1;Binit(6,2);BvaleY(4);cout BvalueX( ) end1 BvalueY( ) end1; A. 5064 B. 0064 C. 5062 D. 0062 (分数:1.00)A.B.C.D.12.对于 while、dowhile 循环结构,正确的说法是U /U。 A. 只是表达形式不同 B.
9、 dowhile 结构中的语句至少执行一次 C. while 结构中的语句至少执行一次 D. 条件成立时,它们有可能一次也不执行(分数:2.00)A.B.C.D.13.下面关于 C语言变量的叙述错误的是 A. C语言中变量分为 auto、static、extern 和 register4 种存储类型 B. 自动变量和外部变量的作用域为整个程序 C. 内部静态变量的作用域是定义它的函数 D. 外部静态变量的作用域是定义它的文件(分数:2.00)A.B.C.D.14.Windows 环境下,由 C+源程序文件编译而成的目标文件的扩展名是U /U。 A.cpp B.exe C.obj D.lik(分
10、数:2.00)A.B.C.D.15.软件详细设计的主要任务是确定每个模块的U /U。 A.算法和使用的数据结构 B.外部接口 C.功能 D.编程(分数:2.00)A.B.C.D.16.有如下程序:#includeiostream.husing namespace std;class Demopublic:Demo() cout“default constructor/n“;Demo(const Demo x)cont“copy constructor/n“;Demo userCode(Demo b)Demo c(b);return c;int main()Demo a;d;eout“calli
11、ng userCode()/n“;d=userCode(a);return 0;执行上面程序的过程中,构造函数 Demo()和 Demo(const Demo x)被调用的次数分别是U /U。 A.1 和 1 B.1 和 2 C.2 和 3 D.2 和 4(分数:2.00)A.B.C.D.17.下列有关内联函数的叙述中,正确的是 A. 内联函数在调用时发生控制转移 B. 内联函数必须通过关键字 inline 来定义 C. 内联函数足通过编译器来实现的 D. 内联函数函数体的最后一条语句必须是 return 语句(分数:1.00)A.B.C.D.18.下列各类函数中,不是类的成员函数的是U /U
12、。 A.构造函数 B.抽象类 C.派生类 D.以上都不对(分数:2.00)A.B.C.D.19.一个满二叉树其深度为 4,则其叶子节点的个数为U /U。 A. 8 B. 16 C. 32 D. 4(分数:1.00)A.B.C.D.20.有 3 个关系 R、S 和 T 如下: (分数:2.00)A.B.C.D.21.有如下程序:#include iostreamusing namespace std;class Musicpublic:void setTitle(char* str) strcpy(title,str);protected:char type10;private:char tit
13、le20;class Jazz:public Musicpublic:void set(char* str)strcpy(type,“Jazz“); /strcpy(title,str); /;下列叙述中正确的是U /U。 A.程序编译正确 B.程序编译时语句出错 C.程序编译时语句出错 D.程序编译时语句和都出错(分数:2.00)A.B.C.D.22.结构化分析方法是面向U /U的自顶向下、逐步求精进行需求分析的方法。 A.对象 B.数据结构 C.数据流 D.目标(分数:2.00)A.B.C.D.23.下面程序的运行结果是#includeiostream,hvoid fun(int*a,in
14、t*b)int X= *a;* a= *b; *b=X;cout *a *b“ “;void main()int x=1, y=2;fun(class CSampleprivate:int i;public:CSample ( );CSample( int val );void Display();CSample ();CSample: CSample ()cout “C1“;i = 0;CSample: :CSample( int val )cout “C2“;i = val;void CSample: :Display()couti“: “;CSample: CSample ( )cout
15、 “D“;int main ( )CSample a, bU /U;return 0;执行后的输出结果为( )。 A. ClC2DD B. DDC1C2 C. C2C1DD D. C1DC2D(分数:1.00)A.B.C.D.27.为了取代 C 中带参数的宏,在 C+中使用 A. 重载函数 B. 内联函数 C. 递归函数 D. 友元函数(分数:2.00)A.B.C.D.28.通过运算符重载,可以改变运算符原有的U /U。 A.操作数类型 B.操作数个数 C.优先级 D.结合性(分数:2.00)A.B.C.D.29.下列叙述中正确的是 A. 实体集之间一对一的联系实际上就是一一对应的关系 B.
16、关系模型只能处理实体集之间一对一的联系 C. 关系模型属于格式化模型 D. 以上三种说法都不对(分数:2.00)A.B.C.D.30.类模板的使用实际上是将类模板实例化成一个具体的U /U。 A.类 B.对象 C.函数 D.模板类(分数:2.00)A.B.C.D.31.下面叙述正确的是 A. 算法的执行效率与数据的存储结构无关 B. 算法的空间复杂度是指算法程序中指令(或语句)的条数 C. 算法的有穷性是指算法必须能在执行有限个步骤之后终止 D. 以上三种描述都不对(分数:2.00)A.B.C.D.32.设有表示学生选课的 3 张表,学生 S(学号、姓名、性别、年龄、身份证号)、课程 C(课号
17、、课名)、选课 SC(学号、课号、成绩),则表 SC 的关键字(键或码)为U /U。 A.课号、成绩 B.学号、成绩 C.学号、课号 D.学号、姓名、成绩(分数:2.00)A.B.C.D.33.在进行了任何 C+流的操作后,都可以用 C+流的有关成员函数检测流的状态,其中只能用于检测刚进行的操作是否失败函数名是 A. fail B. eof C. bad D. good(分数:2.00)A.B.C.D.34.下列关于运算符重载不正确的是 A. 运算符重载不能改变运算符的操作数个数 B. 运算符重载不能改变运算符的优先级 C. 运算符重载不能改变运算符的结合性 D. 运算符重载能改变对预定义类型
18、数据的操作方式 (分数:1.00)A.B.C.D.35.执行语句 for(i=1;i+4;);,后变量 i 的值是 A.3 B.4 C.5 D.不定(分数:1.00)A.B.C.D.二、B填空题/B(总题数:15,分数:26.00)36.如果要在类的对象上使用运算符,除了运算符=和U U /U /U以外,其它的必须都要被重载。(分数:2.00)填空项 1:_37.若有如下程序段: #includeiostream using namespace std; int main() char *p=“abcdefgh“,*r; long *q; q=(long*)p;q+; r=(char*)q;
19、coutrendl; return 0; 该程序的输出结果是U U /U /U。(分数:2.00)填空项 1:_38.以下程序输出的结果是U U /U /U。 #includeiostream.h void main() int a=5,b=4,c=3,d; d=(abc); coutd; (分数:2.00)填空项 1:_39.cin.getline(line,sizeof(line),x)表示的意思是读取 90 个字符存放到 line 如果遇到 1 则结束输入。(分数:1.00)填空项 1:_40.多继承情况下,派生类对基类成员的访问会出现二义性。解决二义性的方法是U U /U /U、 U
20、U /U /U和U U /U /U。(分数:2.00)填空项 1:_41.表达式 x=operator-(y,z)可以表示为U U /U /U。(分数:2.00)填空项 1:_42.多态具体体现运行和编译两个方面,在程序运行时的多态性通过继承和 1 来体现,而程序编译时多态性体现函数和运符的重载上。(分数:1.00)填空项 1:_43.数据的基本单位是U U /U /U。(分数:2.00)填空项 1:_44.写出执行完下列代码段之后指定变量的值: bool x=true,y=false,z=false; x=x; c1ass DehVed:public Base public: void fu
21、n() _ 显式调用基类的 fun 函数 cout“Derivedfun“endl; ;(分数:2.00)填空项 1:_49.数据管理技术发展过程经过人工管理、文件系统和数据库系统 3 个阶段,其中数据独立性最高的是 1阶段。(分数:2.00)填空项 1:_50.以下程序的输出结果 _。 #includeiostream.h void main() int a=0; a+ =(a=8); couta; (分数:1.00)填空项 1:_二级 C+-11-2 答案解析(总分:85.50,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:59.50)1.数据库设计中,用 E-R 图来描述信
22、息结构但不涉及信息在计算机中的表示,它属于数据库设计的U /U。 A.需求分析阶段 B.逻辑设计阶段 C.概念设计阶段 D.物理设计阶段(分数:2.00)A.B.C. D.解析:解析 实体联系图 Entity-Relationsh 中 E-R 图为实体-联系图,提供了表示实体型、属性和联系的方法,用来描述现实世界的概念模型。2.设有以下类和对象的定义:class Apublic:int m;;A k1,k2,*p1,*p2;则下面针对成员变量 m 的引用,错误的是U /U。 A.k1.m=1 B.k2m=2 C.p1m=3 D.(*p2).m=4(分数:2.00)A.B. C.D.解析:解析
23、A*p1,A*p2 为指向 A 类对象的指针,故“p1m=3,(*p2).m=4”是正确的。但 k2 不是指针,k2m 的表示是错误的。3.有如下程序:#ncludeiostremnusing namespace std;class Stackpublic:Stack(unsigned n=10:size(n)rep_=new intsize;top=O;Stack(Stackfor(int i=0;isize;i+)rep_i=s.rep_i;top=s.top;Stack()deleterep_;void push(int a)rep_top=a; top+;int opo()-top;r
24、eturn rep_top;bool is Empty()constreturn top=O;pavate:int*rep_;unsigned size,top;int main()Stack s1;for(int i=1;i5;i+) s1.push(i);Stack s2(s1);for(i=1;i3;i+) couts2.pop(),;s2.push(6);s1.push(7);while(!s2.isEmpty() couts2.pop(),;return 0;执行上面程序的输出是 A.4,3,2,1 B.4,3,6,7,2,1 C.4,3,6,2,1 D.1,2,3,4 (分数:1.
25、00)A.B.C. D.解析:4.有如下程序:#includeiostreamusing namespace std;class Apublic:A(int i)x=i;void dispa()coutx,;pnvate:int x;class B:public Apublic:B(int i):A(i+10)x=i;void dispb()dispa();coutxendl;private:int x:;int main()B b(2);b.dispb();return 0;执行这个程序的输出结果是_。 A.10,2 B.12,10 C.12,2 D.2,2(分数:1.00)A.B.C. D
26、.解析:解析 本题考查派生类的构造函数和基类的构造函数。本题中类 B 继承类 A,定义了一个类 B 的对象并初始化 b(2),此时会执行类 B 的构造函数,执行的结果是继承类 A 中的私有成员赋值了 12,给类B 自身的数据成员 x 赋值了 2,执行 b.dispb()后,输出类 A 的私有成员 x,输出类 B 自身的数据成员,所以答案为 C。5.以下程序的输出结果是#includeiostreamhvoid main() int x=1,y=3;cout x+ “ , “; int x=0;X+=y*2;coutx“ ,“y“ ;“;coutx“ ,“y; A.1,6,3,1,3 B.1,6
27、,3,6,3 C.1,6,3,2,3 D.1,7,3,2,3(分数:1.00)A.B.C. D.解析:解析 coutx+;语句中,程序先输出 x 的值,然后再加 l,所以结果为 1,此时 x 的值为2;布 int x=0;x+=y*2;语句中,将 0 的值赋给 x,然后再运算 x+=y*2 的值,结果为 x=6(此时 x 的值为局部变量),y 的值不变,在最后在执行了 x 语句后的值,所以应为 2。6.有以下函数:char fun(char*p)return p;)则该函数的返回值是U /U。 A.无确切的值 B.形参 p 中存放的地址值 C.一个临时存储单元的地址 D.形参 p 自身的地址值
28、 (分数:1.00)A.B. C.D.解析:7.已知一函数的形参说明为 int arr56,则与此等效的形参说明为 A. int arr B. int5 C. int*a6 D. int(*a)6(分数:2.00)A.B.C.D. 解析:解析 二维数组可以看作是一维数组的扩展。选项 D 表示的是一个一维数组,里面每个元素是一个指针,而指针肯定指向某个地址,从而完成二维数组的扩展。考生要注意选项 C 中*和的运算优先级。8.下列关于运算符重载的描述中,正确的是 A. 运算符重载可以改变操作数的个数 B. 运算符重载可以改变运算符的优先级 C. 运算符重载可以改变运算符的结合性 D. 运算符重载可
29、以使运算符实现特殊功能(分数:2.00)A.B.C.D. 解析:解析 重载后的运算符的优先级和结合性都不会改变,运算符重载进行对原有的运算符进行适当的改造,重载的功能与原有的功能相类似,但是不能改变原运算符的操作对象个数。9.设有程序段:int k=10;while(k=0)k=k-1;则下面描述中正确的是U /U。 A.循环执行 10 次 B.无限循环 C.循环体语句一次也不执行 D.循环体语句执行一次(分数:2.00)A.B.C. D.解析:解析 while 中表达式值一直为 0,故循环一次也不执行。10.对于模板定义关键字 class 和 typename 说法不正确的是U /U。 A.
30、程序中的 class 并不能都替换为 typename B.class 和 typename 都可互相替换 C.程序中的 typename 都能替换为 class D.程序中的部分 class 可以替换为 typename(分数:2.00)A.B. C.D.解析:解析 在 C+程序中的 typename 是都可以替换为 class 的,但 clgss 不能都替换为 typename。11.下列程序的运行结果是#include iostreamhclass Location private:int X,Y;public:void init(int=0,in=0);Void valueX(int
31、val) X=val;int valueX( ) return X;void valueY(int val) Y=val;int valueY( ) return Y; ;void Location:init(int initX,int initY) X=initX;Y=initY;void main( ) Location A,B;Ainit( );AvalueX(5);cout AvalueX( ) end1 AvalueY( ) end1;Binit(6,2);BvaleY(4);cout BvalueX( ) end1 BvalueY( ) end1; A. 5064 B. 0064
32、C. 5062 D. 0062 (分数:1.00)A. B.C.D.解析:解析:本题中有成员函数和它的重载函数,要注意它们的不同在本题中先调用了 init 函数,初始化了 X,Y,都为 0,valueX(5);又将 X 变为 5,所以输出 5 和 0,然后初始化 init(6,2),接着又value Y(4);将 X,Y 设为 6 和 4,所以输出 6 和 4。12.对于 while、dowhile 循环结构,正确的说法是U /U。 A. 只是表达形式不同 B. dowhile 结构中的语句至少执行一次 C. while 结构中的语句至少执行一次 D. 条件成立时,它们有可能一次也不执行(分数
33、:2.00)A.B. C.D.解析:解析 注意区别 while、dowhile 两种循环结构的异同:while 循环是先判断条件是否成立,成立时才执行;而 dowhile 先执行再判断,它至少执行一次。13.下面关于 C语言变量的叙述错误的是 A. C语言中变量分为 auto、static、extern 和 register4 种存储类型 B. 自动变量和外部变量的作用域为整个程序 C. 内部静态变量的作用域是定义它的函数 D. 外部静态变量的作用域是定义它的文件(分数:2.00)A.B. C.D.解析:解析 自动变量是函数体或分程序内定义的变量,它的作用域在所定义的函数体内或分程序体内。14
34、.Windows 环境下,由 C+源程序文件编译而成的目标文件的扩展名是U /U。 A.cpp B.exe C.obj D.lik(分数:2.00)A.B.C. D.解析:解析 cpp 是 C+源文件的扩展名;exe 是可执行文件的扩展名;lik 是连接文件的扩展名。15.软件详细设计的主要任务是确定每个模块的U /U。 A.算法和使用的数据结构 B.外部接口 C.功能 D.编程(分数:2.00)A. B.C.D.解析:16.有如下程序:#includeiostream.husing namespace std;class Demopublic:Demo() cout“default cons
35、tructor/n“;Demo(const Demo x)cont“copy constructor/n“;Demo userCode(Demo b)Demo c(b);return c;int main()Demo a;d;eout“calling userCode()/n“;d=userCode(a);return 0;执行上面程序的过程中,构造函数 Demo()和 Demo(const Demo x)被调用的次数分别是U /U。 A.1 和 1 B.1 和 2 C.2 和 3 D.2 和 4(分数:2.00)A.B.C. D.解析:解析 函数 Demo()为构造函数,而 Demo(con
36、st Demo x)为复制构造函数。C+在创建一个对象时,会自动调用类的构造函数,所以语句“Demo a,d;“将调用函数 Demo()两次。当一个对象作为实参传递给函数时为初始化形参,要调用拷贝构造函数;在函数返回一个对象时调用拷贝构造函数。由此可知语句 d=userCode(a);调用拷贝构造函数 3 次。17.下列有关内联函数的叙述中,正确的是 A. 内联函数在调用时发生控制转移 B. 内联函数必须通过关键字 inline 来定义 C. 内联函数足通过编译器来实现的 D. 内联函数函数体的最后一条语句必须是 return 语句(分数:1.00)A.B.C. D.解析:解析 本题考查了内联
37、函数的概念。在调用的时候,内联函数会像宏函数一样的展开,所以它没有一般函数的参数压栈和退栈操作,所以选项 A 不正确。在 C+中,编译器会将在类的说明部分定义的函数认定为内联函数,即使它们没有用 inline 说明,所以选项 B 不正确。内联函数除了比普通函数有更高的执行效率外,跟普通函数没有任何区别,因此选项 D 也不正确。4 个选项中只有 C 正确。18.下列各类函数中,不是类的成员函数的是U /U。 A.构造函数 B.抽象类 C.派生类 D.以上都不对(分数:2.00)A.B.C. D.解析:解析 构造函数包括默认构造函数和拷贝构造函数等,析构函数和构造函数一样属于类的特殊的成员函数。而
38、友元函数则是为了增加类的访问灵活性而允许其他类的成员函数或全局函数访问类的内部变量或成员函数的一种机制,其缺点是破坏了类的封装性。19.一个满二叉树其深度为 4,则其叶子节点的个数为U /U。 A. 8 B. 16 C. 32 D. 4(分数:1.00)A. B.C.D.解析:解析 若深度为 k,则叶子节点的个数为 2k-1,这是满二叉树的性质之一。20.有 3 个关系 R、S 和 T 如下: (分数:2.00)A.B.C.D. 解析:解析 自然连接是一种特殊的等值连接。当关系 R 和 S 有相同的属性组,且该属性组的值相等时,这样的连接称为自然连接。21.有如下程序:#include ios
39、treamusing namespace std;class Musicpublic:void setTitle(char* str) strcpy(title,str);protected:char type10;private:char title20;class Jazz:public Musicpublic:void set(char* str)strcpy(type,“Jazz“); /strcpy(title,str); /;下列叙述中正确的是U /U。 A.程序编译正确 B.程序编译时语句出错 C.程序编译时语句出错 D.程序编译时语句和都出错(分数:2.00)A.B.C. D.
40、解析:22.结构化分析方法是面向U /U的自顶向下、逐步求精进行需求分析的方法。 A.对象 B.数据结构 C.数据流 D.目标(分数:2.00)A.B.C. D.解析:解析 结构化分析方法是面向数据流进行需求分析的方法,采用自顶向下、逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。23.下面程序的运行结果是#includeiostream,hvoid fun(int*a,int*b)int X= *a;* a= *b; *b=X;cout *a *b“ “;void main()int x=1, y=2;fun(class CSampleprivate:int
41、 i;public:CSample ( );CSample( int val );void Display();CSample ();CSample: CSample ()cout “C1“;i = 0;CSample: :CSample( int val )cout “C2“;i = val;void CSample: :Display()couti“: “;CSample: CSample ( )cout “D“;int main ( )CSample a, bU /U;return 0;执行后的输出结果为( )。 A. ClC2DD B. DDC1C2 C. C2C1DD D. C1DC
42、2D(分数:1.00)A. B.C.D.解析:解析 本题程序首先定义了类 CSample,其内部成员为 private 类型数据成员 int i 和 public 类型成员函数,包括两个构造函数、一个析构函数和一个普通成员函数 void Display(),其成员函数的功能分别为: CSample:CSample():构造函数,输出构造函数的执行消息“C1”,并将数据成员 i 赋值为 i=0: CSample:CSample(int val):重载构造函数,输出构造函数的执行消息“C2”,并将数据成员 i 赋值为 i=val: void CSample:Display():成员函数,输出数据成
43、员 i 的值; CSample:CSample():析构函数,输出析构函数的执行消息,并输出数据成员值。在主函数中,程序分别采用两个构造函数,创建了类 CSample 的两个对象,一个利用不带参数的构造函数创建对象 a,另一个利用带参数的构造函数创建对象 b。根据上面的分析,可以得到 a 和 b 中数据成员 i 的值分别为 0(不带参数情况)和 10(所带参数值)。因此下面的两条输出语句分别输出“0”和“10”。 此外,由于系统在创建对象时会调用构造函数,在对象生命期结束时会调用析构函数,因此程序还会有相应的输出。由于构造函数的调用顺序与对象创建的先后顺序一致,因此程序应该首先输出两个构造函数
44、的调用信息,即“C1”和“C2”。在主函数执行结束后,由于两个对象 a 和 b 的生命期已经结束,因此系统将调用析构函数收回系统资源。由于析构函数的调用顺序与构造函数完全相反,因此系统将首先调用对象 b 的析构函数,程序输出析构函数执行信息“D”;之后调用对象 a 的析构函数,程序输出析构函数执行信息“D”。27.为了取代 C 中带参数的宏,在 C+中使用 A. 重载函数 B. 内联函数 C. 递归函数 D. 友元函数(分数:2.00)A.B. C.D.解析:解析 本题考查的知识点是;内联函数。C+引入内联(inline)函数的原因是用它来取代 C 中的预处理宏函数,即带参数的宏。故本题应该选择 B。28.通过运算符重载,可以改变运算符原有的U /U。 A.操作数类型 B.操作数个数 C.