[计算机类试卷]国家二级(C++)笔试模拟试卷131及答案与解析.doc

上传人:postpastor181 文档编号:502586 上传时间:2018-11-29 格式:DOC 页数:25 大小:72.50KB
下载 相关 举报
[计算机类试卷]国家二级(C++)笔试模拟试卷131及答案与解析.doc_第1页
第1页 / 共25页
[计算机类试卷]国家二级(C++)笔试模拟试卷131及答案与解析.doc_第2页
第2页 / 共25页
[计算机类试卷]国家二级(C++)笔试模拟试卷131及答案与解析.doc_第3页
第3页 / 共25页
[计算机类试卷]国家二级(C++)笔试模拟试卷131及答案与解析.doc_第4页
第4页 / 共25页
[计算机类试卷]国家二级(C++)笔试模拟试卷131及答案与解析.doc_第5页
第5页 / 共25页
点击查看更多>>
资源描述

1、国家二级( C+)笔试模拟试卷 131及答案与解析 1 下列叙述中错误的是 ( )。 ( A)一种数据的逻辑结构可以有多种存储结构 ( B)数据的存储结构与数据的处理效率无关 ( C)数据的存储结构与数据的处理效率密切相关 ( D)数据的存储结构在计算机中所占的空间不一定是连续的 2 下列叙述中错误的是 ( )。 ( A)线性表是由 n个元素组成的一个有限序列 ( B)线性表是一种线性结构 ( C)线性表的所有结点有且仅有一个前件和后件 ( D)线性表可以是空表 3 下列关于栈的描述中错误的 是 ( )。 ( A)栈是先进先出的线性表 ( B)栈只能顺序存储 ( C)栈具有记忆作用 ( D)对

2、栈的插入与删除操作中,不需要改变栈底指针 4 对长度为 n的线性表进行顺序查找,在最坏情况下需要比较的次数为 ( )。 ( A) 125 ( B) n/2 ( C) n ( D) n+1 5 下列叙述中正确的是 ( )。 ( A)在模块化程序设计中,一个模块应该尽量多的包括与其他模块联系的信息 ( B)在自顶向下、逐步细化的设计过程中,首先应设计解决问题的第一个细节 ( C)在模块化程序设计中,一 个模块内部的控制结构也要符合结构化原则 ( D)在程序设计过程中,不能同时采用结构化程序设计方法与模块化程序设计方法 6 下列特征中不是面向对象方法的主要特征的是 ( )。 ( A)多态性 ( B)

3、继承 ( C)封装性 ( D)模块化 7 有下列二叉树,对此二叉树中序遍历的结果为 ( )。 ( A) BDYEACFXZ ( B) DYBEAFCZX ( C) ABCDEFXYZ ( D) ABDYECFXZ 8 下列不属于软件工程 3个要素的是 ( )。 ( A)工具 ( B)过程 ( C)方法 ( D)环境 9 设计软件结构是在软件生命周期的 ( )。 ( A)软件定义期 ( B)软件开发期 ( C)软件维护期 ( D)以上 3个都不是 10 下列工具中为需求分析常用工具的是 ( )。 ( A) PAD ( B) PFD ( C) N-S ( D) DFD 11 下列打开文件的表达式中

4、,错误的是 ( )。 ( A) ofstream ofile;ofile.open(“C:vcLabC.txt“,ios:binary); ( B) fstream iofile;iofile.open(“abC.txt“,ios:ate); ( C) ifstream ifile(“C:vcabC.txt“); ( D) cout.open(“C:vcabC.txt“,ios:binary); 12 C+语言本身没有定义 I/O操作,但 I/O操作包含在 C+实现中。 C+标准库iostream提供了基本的 I/O类。 I/O操作分别由两个类 istream和 ( )提供。 ( A) fst

5、ream ( B) iostream ( C) ostream ( D) cin 13 在 C+程序中, 如果要求通过函数来实现一种简单的功能,并且要求尽可能加快程序执行速度,则应该选用 ( )。 ( A)内联函数 ( B)重载函数 ( C)递归调用 ( D)嵌套调用 14 类 MyClass的定义如下: class MyClass public: MyClass()value=0; SetVariable(int i)value=i; private: int value; ; 则对下列语句序列正确的描述是 ( )。 MyClass*P, my;p= ( A)语句 p= 是把对象 my赋值给

6、指针变量 P ( B)语句 MyClass*p, my; 会调用两次类 MyClass的构造函数 ( C)对语句 *P. SetVariable(5)的调用是正确的 ( D)语句 p- SetVariable(5)与语句 my.SetVariable(5)等价 15 非成员函数只有在声明为 ( ),才能访问这个类的所有 private成员。 ( A)内联函数 ( B)纯虚函数 ( C)重载函数 ( D)友元函数 16 下列关于纯虚函 数与抽象类的描述中,错误的是 ( )。 ( A)纯虚函数是一种特殊的虚函数,它没有具体的实现 ( B)抽象类是指具有纯虚函数的类 ( C)一个基类中说明具有纯虚函

7、数,该基类的派生类一定不再是抽象类 ( D)抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出 17 将 x+y*z中的 “+”用成员函数重载, “*”用友元函数重载应写为 ( )。 ( A) operator+(operator*(y,z) ( B) x.operator+ (operator*(y,z) ( C) x.operator+(x*(y,z) ( D) x+(operator*(y,z) 18 已知递归函数 fun的定义如下: int fun(int n) if(n =1)return 1;/递归结束情况 else return n*fun(n-2);/递归 则函数调用语句

8、fun(5)的返回值是( )。 ( A) 5 ( B) 12 ( C) 15 ( D) 30 19 有下列程序,在横线添加; #include iostream using namespace std; class TestClass public: TestClass (int n)number=n; _/拷贝构造函数 TestClass() private: int number; ; TestClass fun(TestClass p) TestClass temp(P); return temp; int main() TestClsss obj1(10),obj2(0); TestC

9、lass obj3(obj1); obj2=fun(obj3); return 0; ( A) TestClass(TestClass ( B) TestClass(TestClass other)number=other.number; ( C) TestClass(TestClass ( D) TestClass( 20 下列关于成员函数特征的描述中,错误的是 ( )。 ( A)成员函数一定是内联函数 ( B)成员函数可以重载 ( C)成员函数可以设置参数的默认值 ( D)成员函数可以是静态的 21 若类 A和类 B的定义如下: #include malloc.h class A int

10、i,j; public: int geti() return i; ; class B:public A int k; public: void make() k=i*j; ; 则上述定义中非法的表达式是 ( )。 ( A) k=i*j ( B) int k; ( C) return i; ( D) void make(); 22 有如下程序: #include iostream using namespace std; class A public: A()cout “A“; A()cout “ A“; ; class B:public A A*p; public: B()cout “B“;

11、p=new A; B()cout “ B“;delete p; ; int main() B obj; return 0; 执行这个程序的输出结果是 ( )。 ( A) BAA A B A ( B) ABA B A A ( C) BAA B A- A ( D) ABA A B A 23 下列情况中,不会调用拷贝构造函数的是 ( )。 ( A)用一个对象去初始化同一类的另一个新对象时 ( B)将类的一个对象赋值给该类的另一个对象时 ( C)函数的形参是类的对象,调用函数进行形参和实参结合时 ( D)函数的返回值是类的对象,函数执行返回调用时 24 有如下程序: #include iostream

12、 using namespace std; Class Con char ID; public: Con():ID(A)cout 1; Con(char ID) :ID(ID) cout 2; Con(Con char get1D()constreturn ID; ; void show(Con c)cout c.get1D(); int main() Con c1; show(c1); Con c2(B); show(c2); return 0; 执行上面程序的输出是 ( )。 ( A) 13A23A ( B) 23A13B ( C) 13A23B ( D) 13B23A 25 下列函数的功

13、能是判断字符串 str是否对称,对称则返回 true,否则返回 false。请在横线处填上适当内容,实现该函数。 Boo1 fun (char*str) int i=0,j=0; while(strjj+; for(j-;i ji+,j-); return i _ j; ( A) ( B) | ( C) int*value; ; ( A) MyClass my;my.value=10; ( B) MyClass my;*my.value=10; ( C) MyClass my;my.*value=10; ( D) MyClass my(10); 27 下列对派生类的表述中,错误的是 ( )。

14、( A)一个派生类可以作为另一个派生类的基类 ( B)派生类至少有一个基类 ( C)派生类的缺省继承方式是 private ( D)派生类只继承了基类的公有成员和保护成员 28 将下列程序写成三目运算表达式是 ( )。 if(x y)min=x; else min=y; ( A) min=(x y)?x:y ( B) min=(x y)?x:y ( C) min=(x y)x:y ( D) min=(x y)?x,y 29 定义如下枚举类型: enumMonday,Tuesday,Wednesday,Thursday,Friday=2;表达式 Wednesday= =Friday的值是 ( )

15、。 ( A) false ( B) true ( C) 2 ( D)异常 30 关于模板,下列说法不正确的是 ( )。 ( A)用类模板定义一个对象时,不能省略实参 ( B)类模板只能有虚拟类型参数 ( C)类模板本身在编译中不会生成任何代码 ( D)类模板的成员函数 都是模板函数 31 如果一个模板声明列出了多个参数,则每个参数之间必须使用逗号隔开,每个参数都必须使用 ( )关键字来修饰。 ( A) const ( B) static ( C) void ( D) class 32 有如下程序: #include iostream using namespace std; long fun(

16、int n) if(n 2) return(fun(n-1)+fun (n-2); else return 2; int main() cout fun(3) end1; return 0; 则该程序的输出结果应该是 ( )。 ( A) 2 ( B) 3 ( C) 4 ( D) 5 33 下列程序的输出结果是 ( )。 #include iostream using namespace std; template typename T T fun(T a,T b)return(a b)?a:b; void main() cout fun(3,6) , fun(3.14F,6.28F) end1

17、; ( A) 6,3.14 ( B) 3,6.28 ( C) 3,3.14 ( D) 6,6.28 34 有如下类声明; class SAMPLE int n; public: SAMPLE(int i=0):n(i) void setValue(int n0); ; 下列关于 setValue成员函数的实 现中,正确的是 ( )。 ( A) SAMPLE:setValue(int n0)n=n0;) ( B) void SAMPLE:setValue(int n0)n=n0; ( C) void setValue(int n0)n=n0; ( D) (int n0)n=n0; 35 下列有关

18、内联函数的叙述中,正确的是 ( )。 ( A)内联函数在调用时发生控制转移 ( B)内联函数必须通过关键字 inline来定义 ( C)内联函数是通过编译器来实现的 ( D)内联函数函数体的最后一条语句 必须是 return语句 36 在算法的 4个特性中,算法必须能在执行有限个步骤之后终止指的是算法的_特性。 37 按照逻辑结构分类,结构可以分为线性结构和非线性结构,栈属于 _。 38 栈中允许进行插入和删除的一端叫做 _。 39 在面向对象程序设计中,从外面看只能看到对象的外部特征,而不知道也无须知道数据的具体结构以及实现操作的算法,这称为对象的 _。 40 软件工程研究的内容主要包括 _

19、技术和软件工程管理。 41 插入排序算法的主要思想:每 次从未排序序列中取出一个数据,插入到已排序序列中的正确位置。 Insert类的成员函数 sort()实现了插入排序算法,请填空。 class Insert public: Insert(int *b0,int n0):b(b0),n(n0) );/参数 b0是某数组首地址, n是数组元素个数 void sort() /此函数假设已排序序列初始化状态只包含 b0,未排序序列初始为 b1.bn-1 for(int i=1;i n;+i) int t=bi; int j; for(_;j 0;-j) if(t =bj-1) break; bj=

20、bj-1; bj=t; 42 若有函数 fun(x,y),并且已经使函数指针变量 p指向函数 fun,则使用 p调用函数 fun的方法是 _。 43 阅读下列程序: #include iostream.h void fun(int n) int x(5); static int y(10); if(n 0) +x; +y; cout x “,“ y endl; void main() int m(1); fun(m); 则该程序的输出结果是 _。 44 下面是一个栈类的模板,其中 push函数将元素 i压入栈顶, pop函数弹出栈顶元素。栈初始为空, top值为 0,栈项元素在 stackto

21、p-1中,在下面横线处填上适当语句,完成栈类模板的定义。 template class T class Tstack enumsize=1000; T stacksize; int top; public: Tstack():top(0) void push(const T Tpop() if(top=0)exit(1);/栈空时终止运行 return _; ; 45 类中数据成员和成员函数的默认访问级别为 _。 46 在下列的程序的横线处填上适当的语句,使该程序的输出为 12。 #include iostream.h using namespace std; class Base publi

22、c: int a,b; Base(int i)a=i; ; class Derived:public Base int a; public: Derived(int x):Base(x),b(x+1); void show() _;/输出基类数据成员 a的值。 cout b endl; ; void main() Derived d(1); d.show(); return 0; 47 下列程序的输 出结果为 2,请将程序补充完整。 #include iostream using namespace std; class Base public: _void fun() cout 1; ; c

23、lass Derived:public Base public: void fun()cout 2; ; int main() Base*p=new Derived; p- fun(); delete p; return 0; 48 有如下程序: #include iostream using namespace std; class PARENT public: PARENT() cout “PARENT“; ; class SON : public PARENT public: SON() cout “SON“; ; int main() SON son; PARENT *p; p = r

24、eturn 0; 执行上面程序的输出是 _。 49 在 MyClass类的定义中,对赋值运算符;进行重载。请将横线处缺失的部分补充完整。 _MyClass:operator=(const MyClass value = rhs.value; return *this; 50 如下类定义中包含了构造函数和拷贝构造函数的原型声明,请在横线处填写正确的内容,使拷贝构造函数的声明完整。 class myClass private: int data; public: myClass(int value); /构造函数 myClass(const_anotherObject); /拷贝构造函数 国家二级

25、( C+)笔试模拟试卷 131答案与解析 1 【正确答案】 B 【试题解析】 数据的存储结构分为顺序结构和链式结构,一个数据的逻辑结构可以有多种存储结构顺序结构中数据元素所占的存储空间是连续的,而链式存储结构中,数据元素所占的存储空间不一定是连续的。数据的存储结构与数据的处理效率密切相关 2 【正确答案】 C 【试题解析】 线性表是一种线性结构,由 n(n0)个元素组成,所以线性表可以是空表。但是在线性表中,第一个结点没 有前件,最后一个结点没有后件,其他结点有且只有一个前件和后件,所以选项 C) 是错误的。 3 【正确答案】 B 【试题解析】 栈是限定只能在表的一端进行插入和删除操作的线性表

26、,入栈和出栈都是在栈顶进行,它们的操作特点是先进后出,因此具有记忆作用。栈可以采用顺序存储,也可以采用链式存储。 4 【正确答案】 C 【试题解析】 对线性表进行顺序查找时,从表中的第一个元素开始,将给定的值与表中逐个元素的关键字进行比较,直到两者相符,查找到所要找的元素为止。在最坏情况下,要查找的元素是表的最后一个元 素或查找失败,这两种情况都需要将这个元素与表中的所有元素进行比较,因此比较次数为 n。 5 【正确答案】 C 【试题解析】 在模块化程序设计中,模块之间的联系可以通过程序的控制结构来实现,在自顶向下、逐步细化的设计过程中,首先要考虑全局目标,而不是细节。在程序设计中模块化和结构

27、化可以同时使用,一个模块的内部结构也要符合结构化设计原则。 6 【正确答案】 D 【试题解析】 面向对象设计方法与面向过程设计方法有本质的不同,其基本原理:使用现实世界的概念抽象地思考问题从而自然地解决问题。其特点包 括分类性、封装性、模块独立性、继承和多态性等。模块化是结构化程序设计的特点。 7 【正确答案】 B 【试题解析】 对二叉树的中序遍历是指首先遍历左于树,然后访问根结点,最后遍历右子树在遍历左、右子树时,依旧按照 “左子树 根结点 右于树 ”的顺序。本题的遍历顺序是这样的: 首先访问左于树: BDEY; 在左子树 BDEY中,也按中序遍历,先访问左于树 DY:在左子树 DY中,也按

28、中序遍历,先访问左于树,左子树没有,则访问根结点 D,然后访问右子树 Y; 接着访问根 B,再访问右子树 E; 访问左子树 BDEY后, 接着访问根结点 A,然后访问右于树CFXZ; 同理,可得右子树 CFXZ的访问顺序为 FCZX。 8 【正确答案】 D 【试题解析】 软件工程包括 3个要素,即方法、工具和过程。方法是完成软件工程项目的技术手段;工具支持软件的开发、管理和文档生成;过程支持软件开发的各个环节的控制、管理。 9 【正确答案】 B 【试题解析】 设计软件结构,是在软件概要设计阶段进行的,而概要设计属于软件开发期。 10 【正确答案】 D 【试题解析】 需求分析常用的工具有数据流图

29、 (DFD) 、数据字典 (DD) ,判定树和判定表。 PAD(问题分析图 ), PFD(程序流程图 )、 N-S(盒式图 )都是详细设计的常用工具,不是需求分析的工具。 11 【正确答案】 D 【试题解析】 选项 D) 中, cout是标准输出流对象,所以不能用于打开文件。其他选项叙述均正确。 12 【正确答案】 C 【试题解析】 此题考查的是 C+标准库 iostream提供的基本 I/O类。 istream提供了向流中插入数据的有关操作; ostream提供了从流中提取数据的操作。 13 【正确答案】 A 【试题解析】 此题考查的是内联函数的相关知识点。 C+引入内联函数是用它来代替 C

30、语言中的预处理宏函数,内联函数在谓用时,是将表达式用内联函数体来替换,这样会加快程序的执行速度。 14 【正确答案】 D 【试题解析】 选项 A) ,语句 p=对 Value进行赋值即可。 27 【正确答案】 D 【试题解析】 存在多重继 承,所以一个派生类可以作为另一个派生类的基类。定义一个派生类时将基类的继承方式指定为 protected,那么继承了基类重的保护成员,所以选项 D) 错误。 28 【正确答案】 B 【试题解析】 题目中给出的程序是求 x, y中的小值。即如果 x小于 y,那么min=x,否则 min=y。条件运算符为 “?:”, (x y)?x:y是当 x小于 y时取 x,

31、否则取 y。 29 【正确答案】 B 【试题解析】 enum枚举类型名 枚举元素表 ;其中关键词 enum”表示定义的是枚举类型,枚举类型名由标识符组 成,而枚举元素表由枚举元素或枚举常量组成本题中的枚举类型中的数据值 Wednesday 为 2,而 Friday的值赋值为2,所以判断 Wednesday 等于 Friday的表达式值为真,即 true。 30 【正确答案】 B 【试题解析】 类模板不是一个实实在在的类,本身在编译中不会生成任何代码;用类模板定义一个对象时,不能省略实参;类模板的成员函数都是模板函敷。 C+中可以为类模板的参数设置默认值,所以选项 B) 错误。 31 【正确答案

32、】 D 【试题解析】 如果一个模板声明列出了多个参数,则每个 参数之间必须使用逗号隔开,每个参数都必须使用 class 关键字来修饰。 32 【正确答案】 C 【试题解析】 主函数中调用 fun(3),在 fun内部当 n 2时,递归调用 fun(n-1)+fun(n-2),否则返回 2。所以当 n=3时,调用 fun(2)+fun(1),即返回 2+2,等于4。 33 【正确答案】 D 【试题解析】 “?:”为条件运算符, (a b)?a:b是当 a大于 b 时取 a,否则取b。所以第一个 fun(3, 6)调用中, 6大于 3,所以输出 6,同理,第二个fun(3.14F,6.28F)调用

33、中输出 6.28。 34 【正确答案】 B 【试题解析】 此题考查了成员函数的定义格式。在类外部对成员函数定义时的一般格式为:返回类型类名 :成员函数名 (参数表 )函数体 。 35 【正确答案】 C 【试题解析】 此题考查的是内联函数的概念在调用时,内联函数会像宏函数一样地层开,将调用表达式用内联函数体来替换,所以它没有一般函数的参数压栈和退栈操作,所以选项 A) 错误;即使没有使用 inline说明,编译器也会将在类的说明部分定义的函数认定为内联函数,所以选项 B) 错误:内联函数 只是比普通函数有更高的执行效率。对于类型为 void的函数,它不需要返回任何函数值,所以在函数体中既可以使用

34、 return语句,也可以不使用,选项 D) 错误。 36 【正确答案】 有穷性 【试题解析】 算法的 4个基本特性包括可靠性、确定性、有穷性和拥有足够的情报。其中,算法的有穷性指的是算法必须在有限的时间内完成,即算法必须在执行有限个步骤之后终止。 37 【正确答案】 线性结构 【试题解析】 数据的逻辑结构是指数据元素之间的逻辑关系,分为线性结构和非线性结构。常见的线性结构有线性表、栈和队 列等,常见的非线性结构有树、二叉树等。 38 【正确答案】 栈顶 【试题解析】 栈是限定在表的一端进行插入和删除操作的线性表。在表中,允许插入和删除的一端叫做 “栈顶 ”,不允许插入和删除的一端叫做 “栈底

35、 ”。 39 【正确答案】 封装性 【试题解析】 对象具有下列 5个基本特点: 标识唯一性; 分类性: 多态性: 封装性; 模块独立性好。其中,封装性是指从外面看只能看到对象的外部特征,对象的内部特征即处理能力的实行和内部状态,对外是不可见的,对象的内部状态只能由其自身改变。 40 【正确答 案】 软件开发 【试题解析】 软件工程包括软件开发技术和软件工程管理。其中软件开发技术包括软件开发方法学、开发过程、开发工具和软件工具环境,其主体内容是软件开发方法学;软件工程管理包括软件管理学、软件工程经济学、软件心理学等内容。 41 【正确答案】 j=i 【试题解析】 在函数 sort()中,外层 f

36、or循环中依次将数组 b 中的值赋值给变量t,然后在内层循环中依次与已经排序的数组元素进行比较,并在符合条件的位置插入该元素。由 “int t=bi;”语句可知,数组中有 i个元素已经排好了序。因此 ,根据内层循环中的 j 0; -j语句,知道内层循环是将当前的第 i个元素与 j个元素进行比较,前面已知数组中有 i个元素已经排好了序,根据题干中的要求 “插入到已排序序列中 ”,即 j=i。 42 【正确答案】 (*p)(x, y) 【试题解析】 一个函数总是占用一段连续的内存区,而函数名就是该函数所占内存区的首地址。我们可以把函数的这个首地址 (或称入口地址 )赋予一个指针变量, 使该指针变量

37、指向该函数。然后通过指针变量就可以找到并调用这个函数。我们把这种指向函数的指针变量称为 “函数指针变量 ”。函数指针变量定义 的一般形式为:类型说明符 (*指针变量名 )();其中 “类型说明符 ”表示被指函数的返回值的类型。 “(*指针变量名 )”表示 “*”后面的变量是定义的指针变量。最后的空括号表示指针变量所指的是一个函数。 43 【正确答案】 6,11 【试题解析】 由主函数 mian 入手,首先定义变量 m等于 1,然后调用 fun函数。 fun函数中 y为静态数值,等于 10,作用域为到本文件结束。所以 y加 1后,主函数中 y的值也为 11。其中函数中 x的加 1运算调用的是函数

38、中的 x等于 5的变量,作用域为由定义到文件结束,即主函数中输出的 x值为 6。所以答案为 6,11。 44 【正确答案】 stack-top或 stacktop-=1或 stacktop=top-1 【试题解析】 此题考查的是堆栈数据结构。分析题目,首先利用函数 void push(const T &i)将 i压入栈,然后 Tpop()将元素弹出,但由于在压入栈时, top值已经增加 1;要弹出元素,须使 top先减 1,才能把栈顶元素弹出。故正确答案为stack-top。 45 【正确答案】 私有或 private 【试题解析】 此题考查的是类的成员的默认访问权 限。在未声明,即默认情况下

39、,类中数据成员和成员函数的默认访问级别为私有。 46 【正确答案】 cout Base:a 【试题解析】 此题考查的是基类和派生类的构造函数。派生类构造函数的执行顺序;首先调用基类的构造函数,调用顺序按它们被继承时说明的顺序;然后调用子对象的构造函数,调用顺序按它们在类中说明的顺序;最后是派生类构造函数中的内容。此题要求结果是输出 12,分析题目:首先调用基类的构造函数,然后是调用子对象的构造函数,横线处要求输出基类成员 a的值,填入 coutBase:a即可。 47 【正确答案】 virtual 【试题解析】 此题考查的是虚函数的概念。在 C+语言中,一个基类指针可以用于指向它的派生类,而且

40、通过这样的指针调用虚函数时,被调用的是该指针实际所指向的对象类的那个重定义版本,这样的调用叫做多态调用。题目中只有把基类定义为虚函数,才能满足多态性的要求。 48 【正确答案】 PARENTSON 【试题解析】 此题考查的是派生类的构造。主函数开始在定义 SON类的对象son 时,会先执行 PARENT 类的构造函数再执行 SON类的构造函数,输出 “PAKENTSON”;接下来的语句定义 PARENT 和让指针 p指向 son 对象,都并未创建任何对象,所以不会调用构造函数。故最终的输出结果是: PARENTSON。 49 【正确答案】 MyClass& 【试题解析】 此题考查 “=”运算符

41、的重载。运算符 “=”的重载需要注意:返回值应声明为引用,函数体中总是用语句 return *this;返回;如果参数被声明为指向同类对象的引用或指针,应判别所指向的对象是否与被赋值对象为同一对象,如果是则不做任何处理;如果被赋值对象占用了动态空间,应先释放这些资源,以便接收新的资源;如果参数 被声明为指针或引用,通常应加上 const修饰;一个类如果需要重载运算符 =,通常也就需要定义自身特有的复制构造函数,反之亦然。 50 【正确答案】 myClass& 【试题解析】 此题考查的是复制构造函数。复制构造函数定义的一般格式如下:类名 :类名 (const类名 &引用对象名 )复制构造函数体 。而在类中的声明部分可省去 “类名 :”。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1