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

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

1、国家二级( C+)机试模拟试卷 183及答案与解析 一、选择题 1 下列数据结构中,属于非线性结构的是 ( )。 ( A)循环队列 ( B)带链队列 ( C)二叉树 ( D)带链栈 2 下列数据结构中,能够按照 “先进后出 ”原则存取数据的是 ( )。 ( A)循环队列 ( B)栈 ( C)队列 ( D)二叉树 3 对于循环队列,下列叙述中正确的是 ( )。 ( A)队头指针是固定不变的 ( B)队头指针一定大于队尾指针 ( C)队头指针一定小于队尾指针 ( D)队头指针可以大于队尾指针 ,也可以小于队尾指针 4 算法的空间复杂度是指 ( )。 ( A)算法在执行过程中所需要的计算机存储空间

2、( B)算法所处理的数据量 ( C)算法程序中的语句或指令条数 ( D)算法在执行过程中所需要的临时工作单元数 5 软件设计中划分模块的一个准则是 ( )。 ( A)低内聚低耦合 ( B)高内聚低耦合 ( C)低内聚高耦合 ( D)高内聚高耦合 6 下列选项中不属于结构化程序设计原则的是 ( )。 ( A)可封装 ( B)自顶向下 ( C)模块化 ( D)逐步求精 7 软件详细 设计产生的图如下: 该图是 ( )。 ( A) N S图 ( B) PAD图 ( C)程序流程图 ( D) E R图 8 数据库管理系统是 ( )。 ( A)操作系统的一部分 ( B)在操作系统支持下的系统软件 ( C

3、)一种编译系统 ( D)一种操作系统 9 在 E R图中,用来表示实体联系的图形是 ( )。 ( A)椭圆形 ( B)矩形 ( C)菱形 ( D)三角形 10 有三个关系 R, S和 T如下:其中关系 T由关系 R和 S通过某种操作得到,该操作为 ( )。 ( A)选择 ( B)投影 ( C) 交 ( D)并 11 下列符号中可以用做 C标识符的是 ( )。 ( A) _radius ( B) foo bar ( C) else ( D) 3room 12 下列各组类型声明符中,含义相同的一组是 ( )。 ( A) unsigned long int和 long ( B) signed sho

4、rt int和 short ( C) unsigned short和 short ( D) short int和 int 13 必须用一对大括号括起来的程序段是 ( )。 ( A) switch语句中的 case标号语句 ( B) if语句的分支 ( C)循环语句的循环体 ( D)函数的函数体 14 语句 int * p &k;定义了指针 p,与这个语句等效的语句序列是 ( )。 ( A) int * p; p &k; ( B) int * p; p k; ( C) int * p; *p &k; ( D) int * p; *p k; 15 执行下列语句段后,输出字符 “*”的个数是 ( )

5、。 for(int i 50; i 1; i 2)cout *; ( A) 24 ( B) 25 ( C) 26 ( D) 50 16 下列关于运算符重载的叙述中,错误的是 ( )。 ( A)有的运算符可以作为非成员函数重载 ( B)所有的运算符都可以通过重载而被赋予新的含义 ( C)不得为重载的运算符函数的参数设置默认值 ( D)有的运算符只能作为成员函数重载 17 对 C编译器区分重载函数无任何意义的信息是 ( )。 ( A)参数类型 ( B)参数个数 ( C)返回值类型 ( D)常成员函数关键字 const 18 运算符重载时不需要保持的性质是 ( )。 ( A)操作数个数 ( B)操作

6、数类型 ( C)优先级 ( D)结合性 19 下列关于函数的描述中,错误的是 ( )。 ( A)函数可以没有返回值 ( B)函数可以没有参数 ( C)函数可以是一个类的成员 ( D)函数不能被定义为模板 20 关于函数重载,下列叙述中错误的是 ( )。 ( A)重载函数的函数名必须相同 ( B)重载函数必须在参数个数或类型上有所不同 ( C)重载函数的返回值类型必须相同 ( D)重载函数的函数体可以有所不同 21 下列关于运算符重载的描述中,正确的是 ( )。 ( A)运算符重载为成员函数时,若参 数表中无参数,重载的是一元运算符 ( B)一元运算符只能作为成员函数重载 ( C)二元运算符重载

7、为非成员函数时,参数表中有一个参数 ( D) C中可以重载所有的运算符 22 有如下函数定义: void func(int a, int& b)a; b; 若执行代码段: int x 0, y 1; func(x, y); 则变量 x和 y的值分别是 ( )。 ( A) 0和 1 ( B) 1和 1 ( C) 0和 2 ( D) 1和 2 23 对于一个类定义,下列叙述中错误 的是 ( )。 ( A)如果没有定义拷贝构造函数,编译器将生成一个拷贝构造函数 ( B)如果没有定义缺省的构造函数,编译器一定将生成一个缺省的构造函数 ( C)如果没有定义构造函数,编译器将生成一个缺省的构造函数和一个拷

8、贝构造函数 ( D)如果已经定义了构造函数和拷贝构造函数,编译器不会生成任何构造函数 24 有如下头文件: int f1(): static int f2(); class MA public: int t3(); static int f4(); ; 在所描述的函数中,具有隐含的 this指针的是 ( )。 ( A) fl ( B) t2 ( C) t3 ( D) f4 25 下列关于类定义的说法中,正确的是 ( )。 ( A)类定义中包括数据成员和函数成员的声明 ( B)类成员的缺省访问权限是保护的 ( C)数据成员必须被声明为私有的 ( D)成员函数只能在类体外进行定义 26 如果派生类

9、以 protected方式继承基类,则原基类的 protected成员和 public成员在派生类中的访问属性分别是 ( )。 ( A) public和 public ( B) public和 protected ( C) protected和 public ( D) protected和 protected 27 下列有关继承和派生的叙述中,正确的是 ( )。 ( A)派生类不能访问基类的保护成员 ( B)作为虚基类的类不能被实例化 ( C)派生类应当向基类的构造函数传递参数 ( D)虚函数必须在派生类中重新实现 28 有如下类定义: class AA int a; public: AA(i

10、nt n 0): a(n) ; elas BB: public AA public: BB(int n)_ ; 其中横线处缺失的部分是 ( )。 ( A): a(n) ( B): AA(n) ( C) a(n); ( D) a n; 29 有如下程序: #include using namespace std; class CD public: CD() cout C; private: char name80; ; int main() CD a, *b, d2; return 0; 执行这个程序的输出结果是 ( )。 ( A) CCCC ( B) CCC ( C) CC ( D) C 30

11、 有如下程序: 撕 nclude iostream using namespaee std; class MyClass pubiw,: MyClass() count MyClass() count; static int getCount()return count; private: static int count; ; int MyClass count 0; int main() MyClass obj; cout obj getCount(); MyClass * ptr new MyClass: cout MyClass getCount(); delete ptr; cout

12、 MyClss getCount(); return 0; 执行这个程序的输出结果是 ( )。 ( A) 121 ( B) 232 ( C) 221 ( D) 122 31 有如下程序: 撕 nclude iostream using namespace std; class MyClass public: MyClass(int x): val(x) void Print( )eonstcout “const: val“ val t; void Print( ) cout “val “ val t; private: int val: ; int main( ) eonst MyClass

13、obj1(10); MyClass obj2(20); obj1 Print(); obj2 Print(); return 0; 执行这个程序的输出结果是 ( )。 ( A) val 10 const: val 20 ( B) const: val 10 const: val 20 ( C) const: val 10 val 20 ( D) val 10 val 20 32 有如下程序: #jnclude iostream using namespace std; class Part public: Part(int x 0): val(x) cout val; Par ( ) cout

14、 val: private: int val; ; class Whole public: Whole(int x, int y, int z 0): p2(x), p1(y), val(z)cout val; Whole()cout val; private: Part p1, p2; int val; ; int main( ) Whole obj(1, 2, 3); return 0; 执行这个程序的输出结果是 ( )。 ( A) 123321 ( B) 213312 ( C) 213 ( D) 123123 33 有如下程序: #include iostream using names

15、pace std; class Base public: Base(int x 0)cout x; ; class Derived: public Base public: Derived(int x 0)cout x; private: Base val; ; int main() Derived d(1); return 0; 执行这个程序的输出结果是 ( )。 ( A) 0 ( B) 1 ( C) 01 ( D) 001 34 下列代码段中声明了 3个类: class Person ; class Student: public Person ; class Undergraduate:

16、 Student ; 下列关于这些类之间关系的描述中,错误的是 ( )。 ( A)类 Person是类 Undergraduate的基类 ( B)类 Undergraduate从类 Student公有继承 ( C)类 Student是类 Person的派生类 ( D)类 Undergraduate是类 Person的派生类 35 有如下程序: #include iostream using namespace std; class Base public: void output( ) cout 1; virtual void Print( ) cout B; ; class Derived:

17、 public Base public: void output( ) cout 2; void Print( ) cout D; ; int main( ) Base * ptr new Derived: ptr output(); ptr Print(); delete ptr; return 0; 执行这个程序的输出结果是 ( )。 ( A) 1B ( B) 1D ( C) 2B ( D) 2D 36 有如下程序: #include iostream using namespace std; class B public: virtual void show()cout “B“; ; c

18、lass D: public B public: void show( ) cout “D“; ; void fun1(B * ptr)ptr show( ); void fun2(B&ref) ref show( ); void fun3(B b)b show( ); int main( ) B b, *p new D; D d; fun1(p); fun2(b); fun3(d); delete P; return 0; 执行汶个程序的输出结果是 ( )。 ( A) BBB ( B) BBD ( C) DBB ( D) DBD 37 C中的模板包括 ( )。 ( A)对象模板和函数模板 (

19、 B)对象模板和类模板 ( C)函数模板和类模板 ( D)变量模板和对象模板 38 下列关于类模板的模板参数的叙述中,错误的是 ( )。 ( A)模板参数可以作为数据成员的类型 ( B)模板参 数可以作为成员函数的返回类型 ( C)模板参数可以作为成员函数的参数类型 ( D)模板参数不能作为成员函数的局部变量的类型 39 下列关于 C预定义流对象的叙述中,正确的是 ( )。 ( A) cin是 C预定义的标准输入流对象 ( B) cin是 C预定义的标准输入流类 ( C) cout是 C预定义的标准输入流对象 ( D) cout是 C预定义的标准输入流类 40 有如下语句序列: char st

20、r10; cin str; 当从键盘输入 “I love this game”时, str中的字符串是 ( )。 ( A) I love this game ( B) I love thi ( C) I love ( D) I 二、基本操作题 41 请使用 VC6或使用【答题】菜单打开考生文件夹 proj1下的工程 proj1,此工程中包含一个源程序文件 main cpp,其中有类 Book(“书 ”)和主函数 main的定义。程序中位于每个 “ ERROR*found*”下的语句行有错误,请加以改正。改正后程序的输出结果应该是: 是: 书名: C语句程序设计总页数: 299 已把 “C语言程

21、序设计 ”翻到第 50页 已把 “C语言程序设计 ”翻到第 51页 已把 “C语言程序设计 ”翻到第 52页 已把 “C语言程序设计 ”翻到第 51页 已把书合上。 当前页: 0 注意:只修改每个 “ ERROR*found*”下的那一行,不要改动程序中的其他内容。 #include iostream using namespace std; class Book char * title; int num_pages;页数 int cur_page;当前打开页面的页码, 0表示书未打开 public: ERROR*found* Book(const char * theTitle, int

22、pages)num_pages(pages) title new charstrlen(theTitle) 1; strcpy(title, theTitle); cout end1 “书名: “ title “总页数: “ num_pages; Book() deletetitle; bool isClosed()constreturn cur_page 0; 书合上时返回 true,否则返回false bool isOocn()constreturn! isClosed(); 书打开时返回 true,否则返回 false int numOfPages()constreturn num_pa

23、ges; 返回书的页数 int currentPage()constreturn cur_page; 返回打开页面的页码 ERROR*found* void openAtPage(int page_no)const 把书翻到指定页 cout end1: if(page_no 1 page_no num_pages) cout “无法翻到第 “ cur_page “页。 “; close(); else cur_page page_no: cout “已把 “ title “翻到第 “ cur_page “页 “; void openAtPrevPage()openAtPage(cur_page

24、 1); 把书翻到上一页 void openAtNextPage()openAtPage(cur_page 1); 把书翻到下一页 void close() 把书合上 cout end1: if(isClosed() cout “书是合上的。 “; else ERROR*found* num_pages 0; cout “已把书合上。 “; cout end1: ; int main() Book book(“C语言程序设计 “, 299); book openAtPage(50); book openAtNextPage(); book openAtNextPage(); book open

25、AtPrevPage(); book close(); cout “当前页: “ book currentPage() end1; return 0; 三、简单应用题 42 使用 VC6打开考生文件夹 proj2下的工程 proj2,其中有两个类:一是销售类(sale),用于表示按照一件商品的基本价格进行销售;另一个是打折销售类(DiscountSale),用于表示在基本价格基础上 按一个折扣比例进行销售。DiscountSale类继承了 sale类。类的主要数据成员的含义和成员函数的功能要求在程序注释中有说明。请在程序中的横线处填写适当的代码,然后删除横线,完成程序的功能。此程序的正确输出结

26、果应为: Discount item is cheaper Saving is 0 1 注意:只能在横线处填写适当的代码,不要改动程序中的其他内容。 #include iostream using namespace std; class Sale public: Sale( );默认构造函数,将 price初始化为 0 Sale(double the_price);构造函数,用 the_price初始化 price virtual double bill( )const;返回当前商品的价格 (基本价 ) double savings(const Sale&other)const;返回参数 o

27、ther所引用的对象比当前对象便宜的差价 protected: double price;商品的 基本价格 (不打折的价格 ) ; Sale Sale( ): price(0) Sale Sale(double the_price): price(the_price) double Sale bill( )const return price; double Sale savings(const Sale&other)const *found* _;返回当前对象价格比 other贵多少的差价 class DiscountSale: public Sale打折销售类继承销售类 public: D

28、iscountSale( );默认构造函数,将 discount初始化为 0 DiscountSale(double the_price double the_discount);构造函数, the_price是基本价格; the_discount是折扣百分比 virtual double bill( )const;返回本商品销售价格 (即打折以后的实际售价,覆盖了基类的 bill函数 )protected: double discount;折扣百分比。例如降价至原价的 70,此成员值应为 70 : DiscountSale DiscountSale( ): discount(0) Disco

29、untSale DiscountSale(double the_price, double the_discount) : Sale(the_price), discount(the_discount) double DiscountSale bill( )const double fraction discount 100: *found* _;返回本对象打折以后的实际售价 bool operator (const Sale & first, const Sale&second) *found* _;判断是否 first价格低于 second价格 int main( ) Sale simpl

30、e(10 00); DiscountSale discount(11 00, 90); if(discount simple) cout “Discount item is cheaper n“: *found* 这里输出购买 discount比购买 simple节省多少钱 cout “Saving is“ _ end1; else cout “Discount item is not cheaper n“; return 0; 四、综合应用题 43 请使用 VC6或使用【答题】菜单打开考生文件夹 proj3下的工程 proj3,其中包含了类 IntegerSet和主函数 main的定义。一个

31、 IntegerSet对象就是一个整数的集合,其中包含 0个或多个无重复的整数;为了便于进行集合操作,这些整数按升序存放在成员数组 elem的前若干单元中。成员函数 add的作用是将一个元素添加到集合中 (如果集合中不存在该元素 ),成员函数 remove从集合中删除指定 的元素 (如果集合中存在该元素 )。请编写成员函数 remove。在 main函数中给出了一组测试数据,此时程序的正确输出结果应为: 2 3 4 5 27 28 31 66 75 2 3 4 5 6 27 28 31 66 75 2 3 4 5 6 19 27 28 31 66 75 3 4 5 6 19 27 28 31

32、66 75 3 4 5 6 19 27 28 31 66 75 要求: 补充编制的内容写在 “*333*”与 “*666*”之间,不得修改程序的其他部分。 注意:程序最后将结果输出到文件 out dat中。输出函数 WriteToFile已经编译为 obj文件,并且在本程序中调用。 IntegorSet h #ifndef INTEGERSET #define INTEGERSET #include iostream using namespace std; const int MAXELEMENTS 100; 集合最多可拥有的元素个数 class IntegerSet int elemMAX

33、ELEMENTS; 用于存放集合元素的数组 int counter;用于记录集合中元素个数的计数器 public: IntegerSet( ): counter(0) 创建一个空集合 IntegerSet(int data , int size); 利用数组提供的数据创建一个整数集合 void add(int element); 添加一个元素到集合中 void remove(int element); 删除集合中指定的元素 int getCount( )constreturn counter; 返回集合中元素的个数 int getElement(int i)constreturn elemi;

34、 返回集合中指定的元素 void show( )const; ; void WriteToFile(char *); #endif main cpp #include“IntegerSet h“ #include iomanip IntegerSet IntegerSet(int data , int size): counter(0) for(int i 0; i size; i ) add(datai); void IntegerSet add(int element) int j; 从后往前寻找第一个小于等于 element的元素 for(j counter; j 0; j ) if(e

35、lement elemj 1)break; 如果找到的是等于 element的元素,说明要添加的元素已经存在,直接返回 if(j 0) if(element elemj 1)return; 如果找到的是小于 element的元素, j就是要添加的位置 该元素及其后面的元素依次后移,腾出插入位 置 for(int k counter; k j; k ) elemk elemk 1; elemj element;将 element插入到该位置 counter; 计数器加 1 void IntegerSet remove(int element) *333* *666* void IntegerSe

36、t show( )const for(int i 0; i getCount( ); i ) cout setw(4) getElement(i); cout end1: int main( ) int d 5, 28, 2, 4, 5, 3, 2, 75, 27, 66, 31; IntegerSet s(d, 11); s show( ); S add(6); S show( ); S add(19); S show( ); S remove(2); S show( ); S add(4); S show( ); WriteToFile(“ “); return 0; 国家二级( C+)机

37、试模拟试卷 183答案与解析 一、选择题 1 【正确答案】 C 【试题解析】 树是简单的非线性结构,所以二叉树作为树的一种也是一种非线性结构。 2 【正确答案】 B 【试题解析】 栈是按先进后出的原则组织数据的。队列是先进先出的原则组织数据。 3 【正确答案】 D 【试题解析】 循环队列的队头指针与队尾指针都不是固定的,随着入队与出队操作要进行变化。因为是循环利用的队列结构所以队头指针有时可能大于队尾指针有时也可能小于队尾指针。 4 【正确答案】 A 【试题解析】 算法的空间复杂度是指算法在执行过程中所需要的内存空间。所以选择 A。 5 【正确答案】 B 【试题解析】 一般较优秀的软件设计,应

38、尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。 6 【正确答案】 A 【试题解析】 结构化程序设计的思想包括:自顶向 下、逐步求精、模块化、限制使用 goto语句,所以选择 A。 7 【正确答案】 C 【试题解析】 N S图提出了帑方框图来代替传统的程序流程图,所以 A不对。 PAD图是问题分析图,它是继承程序流程图和方框图之后提出的又一种主要用于描述软件详细设计的图形表示工具,所以 B不对。 ER图是数据库中的用于表示 ER模型的图示工具,所以 D不对。根据图中所示表示方法是进行软件详细设计时使用的程序流程图。 8 【正确答案】 B 【试题解析】

39、 数据库管理系统是数据库的机构,它是一种系统软件,负责数据库中数据 组织、数据操纵、数据维护、控制及保护和数据服务等。是一种在操作系统之上的系统软件。 9 【正确答案】 C 【试题解析】 在 E R图中实体集用矩形,属性用椭圆,联系用菱形。 10 【正确答案】 D 【试题解析】 并关系 T中包含了关系 R与 s中的所有元组,所以进行的是并的运算。 11 【正确答案】 A 【试题解析】 本题考查 C标识符的命名规则,其规则有如下几点: 所有标识符必须由字母、数字或下画线组成,且必须由字母或下画线开头; 所有标识符不能使用 C已有的关键字; 大、小写字 母表示不同意义,即代表不同的标识符。选项 B

40、包含了字符 “ ”,选项 C是关键字,选项 D不能以数字开头。故答案为 A。 12 【正确答案】 B 【试题解析】 本题考查整型变量的类型, A、 C选项中前者为无符号的,后者为有符号的, D选项中 short int为 2个字节, int为 4个字节。 13 【正确答案】 D 【试题解析】 本题考查 C基本控制结构, A、 B、 C三个选项中的大括号不是必须的,而 D选项中的函数体必须使用大括号。 14 【正确答案】 A 【试题解析】 本题考查指针和地址,题目中 定义了一个指向变量 k的一个指针p,那么与题目中等效的表达式 A选项,即先定义一个指向整型的指针,然后指向k的地址。 15 【正确

41、答案】 B 【试题解析】 本题考查 for循环语句,题目中每执行完循环体后, i都会减 2,那么只有 50到 2之间的偶数才能输出 “*”,所以总共输出 25次。 16 【正确答案】 B 【试题解析】 重载运算符的规则如下: C不允许用户自己定义新的运算符,只能对已有的 C运算符进行重载; C不能重载的运算符只有 5个; 重载不能改变运算符运算对象的个数; 重载不能改变 运算符的优先级和结合性; 重载运算符的函数不能有默认的参数; 重载的运算符必须和用户定义的自定义类型的对象一起使用,至少应有一个是类对象,即不允许参数全部是 C的标准类型。所以答案为 B。 17 【正确答案】 C 【试题解析】

42、 所谓函数重载是指同一个函数名可以对应多个函数的实现。每种实现对应一个函数体,这些函数的名字相同,其参数类型或个数不同,但不能出现函数返回值类型不同而参数类型和个数完全相同的重载。所以本题答案为 C。 18 【正确答案】 B 【试题解析】 重载运算符的规则如下: C 不允许用户自己定义新的运算符,只能对已有的 C运算符进行重载; C不能重载的运算符只有 5个; 重载不能改变运算符运算对象的个数; 重载不能改变运算符的优先级和结合性; 重载运算符的函数不能有默认的参数; 重载的运算符必须和用户定义的自定义类型的对象一起使用,至少应有一个是类对象,即不允许参数全部是 C的标准类型。所以笞案为 B。

43、 19 【正确答案】 D 【试题解析】 本题考查函数的基础知识,函数可以没有返回值,没有参数,也可以是一个类的成员,函数可以定义为模板,即模板函数。 20 【正 确答案】 C 【试题解析】 所谓函数重载是指同一个函数名可以对应多个函数的实现。每种实现对应一个函数体,这些函数的名字相同,其参数类型或个数不同,但不能出现函数返回值类型不同而参数类型和个数完全相同的重载。所以本题答案为 C。 21 【正确答案】 A 【试题解析】 运算符重载为成员函数时,会省略一个参数,如果无参数,表明是一元运算符。一元运算符既可以作为成员函数重载,也可以作为非成员函数重载。二元运算符如果作为非成员函数,则参数表中必

44、须有两个参数。 C有 5个运算符不能重载,它们是: (成员访 问运算符 )、 *(成员指针访问运算符 )、 (域运算符 )、 sizeof(长度运算符 )和 ?: (条件运算符 )。故本题答案为 A。 22 【正确答案】 C 【试题解析】 函数参数的 3种传递方式: 将变量名作为形参和实参,即传值方式; 传递变量指针; 引用形参。本题中实参 x为传值方式,所以 x的值不会改变; y为引用形参,所以会改变。故本题答案为 C。 23 【正确答案】 B 【试题解析】 本题考查构造函数和复制构造函数,如果没有定义构造函数,编译器将生成一个缺省的构造函数和一个拷贝构造函数,如果已经定义 了构造函数和拷贝

45、构造函数,编译器不会生成任何构造函数。如果没有定义拷贝构造函数,编译器将生成一个拷贝构造函数。 24 【正确答案】 C 【试题解析】 只有类的非静态成员函数才隐含 this指针,其作用域是类内部,当类的非静态成员函数中访问类的非静态成员时,编译器会自动将对象本身的地址作为一个隐含参数传递给函数,而不必一定写上 this。所以本题答案为 C。 25 【正确答案】 A 【试题解析】 类的成员的缺省访问权限是私有的,数据成员可以是私有,可以是公用的,也可以是受保护的。类的成员函数可以 在类内定义。 26 【正确答案】 D 【试题解析】 本题考查保护继承中派生类对基类的访问属性,在受保护继承中,基类的

46、公用成员和保护成员在派生类中成了保护成员,其私有成员仍为基类私有,所以本题答案为 D。 27 【正确答案】 C 【试题解析】 派生类可以访问基类的保护成员,而不能访问基类的私有成员。作为虚基类的类可以被实例化。虚函数如果没有派生类中重新实现,那么仍然使用基类的成员函数。 28 【正确答案】 B 【试题解析】 本题考查公用继承对基类成员的访问属性。公用继承中,基类的公用成员和保护成员在派生类中保持原有访问属性,其私有成员仍为基类私有,本题中若要给派生类继承下来基类的私有成员赋值,那么只能调用基类的成员函数来对它赋值,所以本题答案为 B。 29 【正确答案】 B 【试题解析】 本题考查类的析构函数,题目中定义了类的一个对象 a,对象指针*b,对象数组 d2当程序执行完后,析构函数执行了 3次,输出 “CCC”对象指针不会执行析构函数。所以本题答案为 B

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

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

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