欢迎来到麦多课文档分享! | 帮助中心 海量文档,免费浏览,给你所需,享你所想!
麦多课文档分享
全部分类
  • 标准规范>
  • 教学课件>
  • 考试资料>
  • 办公文档>
  • 学术论文>
  • 行业资料>
  • 易语言源码>
  • ImageVerifierCode 换一换
    首页 麦多课文档分享 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

    【计算机类职业资格】二级C++-16-1及答案解析.doc

    • 资源ID:1323980       资源大小:127KB        全文页数:29页
    • 资源格式: DOC        下载积分:5000积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    二维码
    微信扫一扫登录
    下载资源需要5000积分(如需开发票,请勿充值!)
    邮箱/手机:
    温馨提示:
    如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如需开发票,请勿充值!如填写123,账号就是123,密码也是123。
    支付方式: 支付宝扫码支付    微信扫码支付   
    验证码:   换一换

    加入VIP,交流精品资源
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    【计算机类职业资格】二级C++-16-1及答案解析.doc

    1、二级 C+-16-1 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:40.00)1.程序流程图中带有箭头的线段表示的是_。(分数:1.00)A.图元关系B.数据流C.控制流D.调用关系2.结构化程序设计的基本原则不包括_。(分数:1.00)A.多态性B.自顶向下C.模块化D.逐步求精3.软件设计中模块划分应遵循的准则是_。(分数:1.00)A.低内聚低耦合B.高内聚低耦合C.低内聚高耦合D.高内聚高耦合4.在软件开发中,需求分析阶段产生的主要文档是_。(分数:1.00)A.可行性分析报告B.软件需求规格说明书C.概要设计说明书D.集成测试计划5.算法的有

    2、穷性是指_。(分数:1.00)A.算法程序的运行时间是有限的B.算法程序所处理的数据量是有限的C.算法程序的长度是有限的D.算法只能被有限的用户使用6.对长度为 n 的线性表排序,在最坏情况下,比较次数不是 n(n-1)/2 的排序方法是_。(分数:1.00)A.快速排序B.冒泡排序C.直接插入排序D.堆排序7.下列关于栈的叙述正确的是_。(分数:1.00)A.栈按“先进先出”组织数据B.栈按“先进后出”组织数据C.只能在栈底插入数据D.不能删除数据8.在数据库设计中,将 E-R 图转换成关系数据模型的过程属于_。(分数:1.00)A.需求分析阶段B.概念设计阶段C.逻辑设计阶段D.物理设计阶

    3、段9.有三个关系 R、S 和 T 如下: R B C D a 0 k 1 b 1 n 1 S B C D f 3 h 2 a 0 k 1 n 2 x 1 T B C D a 0 k 1 由关系 R 和 S 通过运算得到关系 T,则所使用的运算为_。(分数:1.00)A并B.自然连接C.笛卡尔积D交10.设有表示学生选课的三张表,学生 S(学号,姓名,性别,年龄,身份证号),课程 C(课号,课名),选课 SC(学号,课号,成绩),则表 SC 的关键字(键或码)为_。(分数:1.00)A.课号,成绩B.学号,成绩C.学号,课号D.学号,姓名,成绩11.下列语句中,错误的是_。(分数:1.00)A.

    4、const int buffer=256;B.const int temp;C.const double *point;D.const double *rt=new double(5.5);12.有如下程序: int x=3; do x- =2; coutx; while(!(-x); 执行这个程序的输出结果是_。(分数:1.00)A.1B.3 0C.1-2D.死循环13.有如下程序: #include iostream using namespace std; int main() int *p; *p=9; cout“The value at p:“*p; return 0; 编译运行程序

    5、将出现的情况是_。(分数:1.00)A.编译时出现语法错误,不能生成可执行文件B.运行时一定输出:The value at p:9C.运行时一定输出:The value at p:*9D.运行时有可能出错14.if 语句的语法格式可描述为: 格式 1:if(条件)语句 或 格式 2:if(条件)语句 1 else语句 2 关于上面的语法格式,下列表述中错误的是_。(分数:1.00)A.条件部分可以是一个 if 语句,例如 if(if(a=0)B.语句部分可以是一个 if 语句,例如 if()if()C.如果在条件前加上逻辑非运算符!并交换语句 1和语句 2的位置,语句功能不变D.语句部分可以是

    6、一个循环语句,例如 if()while()15.下列符号中,正确的 C+标识符是_。(分数:1.00)A.enumB.2bC.foo-9D._3216.下列关于 C+函数的说明中,正确的是_。(分数:1.00)A.内联函数就是定义在另一个函数体内部的函数B.函数体的最后一条语句必须是 return 语句C.标准 C+要求在调用一个函数之前,必须先声明其原型D.编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式17.运算符重载是对已有的运算符赋予多重含义,因此_。(分数:1.00)A.可以对基本类型(如 int 类型)的数据,重新定义“+”运算符的含义B.可以改变一个已有运算符的优先级

    7、和操作数个数C.只能重载 C+中已经有的运算符,不能定义新运算符D.C+中已经有的所有运算符都可以重载18.下列有关内联函数的叙述中,正确的是_。(分数:1.00)A.内联函数在调用时发生控制转移B.内联函数必须通过关键字 inline 来定义C.内联函数是通过编译器来实现的D.内联函数体的最后一条语句必须是 return 语句19.下列运算符不能重载为友元函数的足_。(分数:1.00)A.=() ( ) -B.+ - + - -C. = =D.+= -= *= /=20.有如下程序: #includeiostream using namespace std; int main() void

    8、function(double val); double val; function(val); coutval; return 0; void function(double val) val=3; 编译运行这个程序将出现的情况是_。(分数:1.00)A.编译出错,无法运行B.输出:3C.输出:3.0D.输出一个不确定的数21.下面是重载为非成员函数的运算符的函数原型,其中错误的是_。(分数:1.00)A.Fraction operator+(Fraction, Fraction);B.Fraction operator-(Fraction);C.FractionD.Fraction22.有

    9、如下类定义: class MyClass public: _ private: int data; ; 若要为 MyClass 类重载流输入运算符“”,使得程序中可以“cinobj;”的形式改变 MyClass 类的对象 obj 中数据成员 data 的值,则横线处的声明语句应为_。(分数:1.00)A.friend istreamB.friend istreamC.istreamD.istream23.由于常对象不能被更新,因此_。(分数:1.00)A.通过常对象只能调用它的常成员函数B.通过常对象只能调用静态成员函数C.常对象的成员都是常成员D.通过常对象可以调用任何不改变对象值的成员函数

    10、24.有如下类定义: class AA int a; public: int getRef() const return / int getValue() const return a;/ void set(int n)consta=n; / friend void show(AA aa)const couta;/ ; 其中四个函数的定义中正确的是_。(分数:1.00)A.B.C.D.25.下列关于 this 指针的描述中,正确的是_。(分数:1.00)A.类的成员函数都有 this 指针B.类的友元函数都有 this 指针C.任何与类相关的函数都有 this 指针D.类的非静态成员函数都有

    11、this 指针26.下列关于虚函数的说明中,正确的是_。(分数:1.00)A.从虚基类继承的函数都是虚函数B.虚函数不得是静态成员函数C.只能通过指针或引用调用虚函数D.抽象类中的成员函数都是虚函数27.下列关于基类和派生类关系的叙述中,正确的是_。(分数:1.00)A.每个类最多只能有一个直接基类B.派生类中的成员可以访问基类中的任何成员C.基类的构造函数必须在派生类的构造函数体中调用D.派生类除了继承基类的成员,还可以定义新的成员28.有如下类定义: class B public: void fun1() private: void fun2() protected: void fun3(

    12、) ; class D: public B protected: void fun4() ; 若 obj 是类 D 的对象,则下列语句中不违反访问控制权限的是_。(分数:1.00)A.obj. fun1();B.obj. fun2();C.obj. fun3();D.obj. fun4();29.有如下类定义: class Foo public: Foo(int v): value(v) / Foo() / private: Foo() / int value=0;/ ; 其中存在语法错误的行是_。(分数:1.00)A.B.C.D.30.有如下类定义: class Point int xx,

    13、yy; public: Point(): xx(0), yy(0) Point(int x, int y=0): xx(x),yy(y) ; 若执行语句 Point a(2), b3, *c4; 则 Point 类的构造函数被调用的次数是_。(分数:1.00)A.2 次B.3 次C.4 次D.5 次31.有如下类定义: class Test public: Test() a=0; c=0; / int f(int a) const this-a=a; / static int g() return a; / void h(int b) Test: b=b;/ private: int a; s

    14、tatic int b; const int c; ; int Test: b=0; 在标注号码的行中,能被正确编译的是_。(分数:1.00)A.B.C.D.32.有如下类声明: class SAMPLE int n; public: SAMPLE(int i=0):n(i) void setValue(int n0); ; 下列关于 getValue 成员函数的定义中,正确的是_。(分数:1.00)A.SAMPLE: setValue(int n0) n=n0; B.void SAMPLE: setValue(int n0) n=n0;C.void setValue(int n0) n=n0

    15、;D.setValue(int n0) n=n0;33.有如下程序: #includeiostream using namespace std; class A public: A() cout“A“; A() cout“A“; ; class B: public A A*P; public: B() cout“B“; P=new A(); B() cout“B“; delete P; ; int main() B obj; return 0; 执行这个程序的输出结果是_。(分数:1.00)A.BAAABAB.ABABAAC.BAABAAD.ABAABA34.有如下程序: #includeio

    16、stream using namespace std; class Base private: void fun1()const cout“fun1“; protected: void fun2()const cout“fun2“; public: void fun3() const cout“fun3“; ; class Derived: protected Base public: void fun4() const cout“fun4“; ; int main() Derived obj; obj. fun1();/ obj. fun2();/ obj. fun3();/ obj. fu

    17、n4();/ return 0; 其中有语法错误的语句是_。(分数:1.00)A.B.C.D.35.有如下程序: #include iostream using namespace std; class Base1 public: Base1(int d) coutd; Base1() ; class Base2 public: Base2(int d) coutd; Base2() ; class Derived: public Base1, Base2 public: Derived(int a, int b, int c, int d): Base1(b), Base2(a), b1(d

    18、), b2(c) private: int b1: int b2: ; int main() Derived d(1, 2, 3, 4); return 0; 执行这个程序的输出结果是_。(分数:1.00)A.1234B.2134C.12D.2136.有如下程序: #include iostream using namespace std; class Base public: voidfun1() cout“Base/n“; virtual void fun2() cout“Base/n“; ; class Derived: public Base public: void fun1() c

    19、out“Derived/n“; void fun2() cout“Derived/n“; ; void f(Base b.fun2(); int main() Derived obj; f(obj); return 0; 执行这个程序的输出结果是_。 A B C D (分数:1.00)A.B.C.D.37.模板对类型的参数化提供了很好的支持,因此_。(分数:1.00)A.类模板的主要作用是生成抽象类B.类模板实例化时,编译器将根据给出的模板实参生成一个类C.在类模板中的数据成员都具有同样类型D.类模板中的成员函数都没有返回值38.有如下函数模板: template typename T, ty

    20、pename U T cast(U u) return u; 其功能是将 U 类型数据转换为 T 类型数据。已知 i 为 int 型变量,下列对模板函数 cast 的调用中正确的是_。(分数:1.00)A.cast(i);B.cast(i);C.castchar*, int(i);D.castdouble, int(i);39.要建立文件流并打开当前目录下的文件 file. dat 用于输入,下列语句中错误的是_。(分数:1.00)A.ifstream fin=ifstream. open(“file. dat“);B.ifstream *fin=new ifstream(“file. dat

    21、“);C.ifstream fin; fin. open(“file. dat“);D.ifstream *fin=new ifstream(); fin-open(“file. dat“);40.当使用 ifstream 流类定义一个流对象并打开一个磁盘文件时,文件的默认打开方式为_。(分数:1.00)A.ios_base:inB.ios_base:in | ios_base:outC.ios_base:outD.ios_base:in class MyClass int value; public: /ERROR *found* void MyClass(int val): value(v

    22、al) int GetValue()const return value; void SetValue(int val); ; /ERROR *found* inline void SetValue(int val) value=val; int main() MyClass obj(0); obj. SetValue(10); /ERROR *found*下列语句功能是输出 obj 的成员 value 的值 cout“The value is“obj. valueendl; return 0; (分数:18.00)_三、简单应用题(总题数:1,分数:24.00)42.请使用 VC6 或使用答

    23、题菜单打开 proj2 下的工程 proj2,此工程包含有一个源程序文件 proj2. cpp,其中定义了 Stack 类和 ArrayStack 类。 Stack 是一个用于表示数据结构“栈”的类,栈中的元素是字符型数据。Stack 为抽象类,它只定义了栈的用户接口,如下所示: 公有成员函数 功能 push 入栈:在栈顶位置添加一个元素 pop 退栈:取出并返回栈顶元素 ArrayStack 是 Stack 的派生类,它实现了 Stack 定义的接口。ArrayStack 内部使用动态分配的字符数组作为栈元素的存储空间。数据成员 maxSize 表示的是栈的最大容量,top 用于记录栈顶的位

    24、置。成员函数push 和 pop 分别实现具体的入栈和退栈操作。 请在程序中的横线处填写适当的代码,然后删除横线,以实现上述功能。此程序的正确输出结果应为: a, b, c c, b, a 注意:只在指定位置编写适当代码,不要改动程序中的其他内容,也不要删除或移动“/*found*”。 /proj2. cpp #include iostream using namespace std; class Stack public: virtual void push(char c)=0; virtual char pop()=0; class ArrayStack: public Stack cha

    25、r*P; int maxSize; int top; public: ArrayStack(int s) top=0; maxSize=s; /*found* P=_; ArrayStack() /*found* _; void push(char c) if(top=maxSize) cerr“Overflow!/n“; return; /*found* _; top+; char pop() if(top=0) cerr“Underflow!/n“; return“/0“; top-; /*found* _; ; void f(Stack coutch0“,“ ch1“,“ ch2endl

    26、; sRef. push(ch0); sRef. push(ch1); sRef. push(ch2); coutsRef. pop()“,“; coutsRef. pop()“,“; coutsRef. pop()endl; int main() ArrayStack as(10); f(as); return 0; (分数:24.00)_四、综合应用题(总题数:1,分数:18.00)43.请使用 VC6 或使用答题菜单打开 proj3 下的工程文件 proj3,此工程中包含一个源程序文件 proj3. cpp,补充编制 C+程序 proj3. cpp,其功能是读取文本文件 in. dat

    27、中的全部内容,将文本存放到 doc类的对象 myDoc 中。然后将 myDoc 中的字符序列反转,并输出到文件 out. dat 中。文件 in. dat 的长度不大于 1000 字节。 要求: 补充编制的内容写在“/*333*”与“/*66666*”两行之间。实现将 myDoc 中的字符序列反转,并将反转后的序列在屏幕上输出。不得修改程序的其他部分。 注意:程序最后已将结果输出到文件 out. dat 中,输出函数 writeToFile 已经给出并且调用。 /proj3. cpp #includeiostream #ncludefstream #includecstring using n

    28、amespace std; class doc private: char*str;/文本字符串首地址 int length;/文本字符个数 public: /构造函数,读取文件内容,用于初始化新对象,filename 是文件名字符串首地址 doc(char*filename); void reverse();/将字符序列反转 doc(); void writeToFile(char*filename); ; doc:doc(char*filename) ifstream myFile(filename); int len=1001, trap; str=new charlen; length

    29、=0; while(tmp=myFile. get()!=EOF) strlength+=tmp; strlength=“/0“; myFile. close(); void doc:reverse() /将数组 str 中的 length 个字符中的第一个字符与最后一个字符交换,第二个字符与倒数第二个 /字符交换 /*333* /*666* doc:doc() deletestr; void doc:writeToFile(char*filename) ofstream outFile(filename); outFilestr; outFile. close(); void main()

    30、doc myDoc(“in. dat“); myDoc. reverse(); myDoc. writeToFile(“out. dat“); (分数:18.00)_二级 C+-16-1 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:40.00)1.程序流程图中带有箭头的线段表示的是_。(分数:1.00)A.图元关系B.数据流C.控制流 D.调用关系解析:解析 在数据流图中,用标有名字的箭头表示数据流。在程序流程图中,用标有名字的箭头表示控制流。所以选择 C。2.结构化程序设计的基本原则不包括_。(分数:1.00)A.多态性 B.自顶向下C.模块化D.逐步

    31、求精解析:解析 结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限制使用 goto 语句,所以选择 A。3.软件设计中模块划分应遵循的准则是_。(分数:1.00)A.低内聚低耦合B.高内聚低耦合 C.低内聚高耦合D.高内聚高耦合解析:解析 软件没计中模块划分应遵循的准则是高内聚低偶合、模块大小规模适当、模块的依赖关系适当等。模块的划分应遵循一定的要求,以保证模块划分合理,并进一步保证以此为依据开发出的软件系统可靠性强,易于理解和维护。模块之间的耦合应尽可能的低,模块的内聚度应尽可能的高。4.在软件开发中,需求分析阶段产生的主要文档是_。(分数:1.00)A.可行性分析报告B.软件需求规格

    32、说明书 C.概要设计说明书D.集成测试计划解析:解析 A 错误,可行性分析阶段产生可行性分析报告。C 错误,概要设计说明书是总体设计阶段产生的文档。D 错误,集成测试计划是在概要设计阶段编写的文档。B 正确,软件需求规格说明书是后续工作如没计、编码等需要的重要参考文档。5.算法的有穷性是指_。(分数:1.00)A.算法程序的运行时间是有限的 B.算法程序所处理的数据量是有限的C.算法程序的长度是有限的D.算法只能被有限的用户使用解析:解析 算法原则上能够精确地运行,而且人们用笔和纸做有限次运算后即可完成。有穷性是指算法程序的运行时间是有限的。6.对长度为 n 的线性表排序,在最坏情况下,比较次

    33、数不是 n(n-1)/2 的排序方法是_。(分数:1.00)A.快速排序B.冒泡排序C.直接插入排序D.堆排序 解析:解析 除了堆排序算法的比较次数是 O(nlog2n),其他的都是 n(n-1)/2。7.下列关于栈的叙述正确的是_。(分数:1.00)A.栈按“先进先出”组织数据B.栈按“先进后出”组织数据 C.只能在栈底插入数据D.不能删除数据解析:解析 栈是按“先进后出”的原则组织数据的,数据的插入和删除都在栈顶进行操作。8.在数据库设计中,将 E-R 图转换成关系数据模型的过程属于_。(分数:1.00)A.需求分析阶段B.概念设计阶段C.逻辑设计阶段 D.物理设计阶段解析:解析 E-R

    34、图转换成关系模型数据则是把图形分析出来的联系反映到数据库中,即设计出表,所以属于逻辑设计阶段。9.有三个关系 R、S 和 T 如下: R B C D a 0 k 1 b 1 n 1 S B C D f 3 h 2 a 0 k 1 n 2 x 1 T B C D a 0 k 1 由关系 R 和 S 通过运算得到关系 T,则所使用的运算为_。(分数:1.00)A并B.自然连接C.笛卡尔积D交 解析:解析 自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,所以 B 错误。笛卡尔积是用 R 集合中元素为第一元素,S 集合中元素为第二元素构成

    35、的有序对,所以 C 错误。根据关系 T 可以很明显地看出是从关系 R 与关系 S 中取得相同的关系组所以取得是交运算,选择 D。10.设有表示学生选课的三张表,学生 S(学号,姓名,性别,年龄,身份证号),课程 C(课号,课名),选课 SC(学号,课号,成绩),则表 SC 的关键字(键或码)为_。(分数:1.00)A.课号,成绩B.学号,成绩C.学号,课号 D.学号,姓名,成绩解析:解析 学号是学生表 S 的主键,课号是课程表 C 的主键,所以选课表 SC 的关键字就应该是与前两个表能够直接联系且能唯一定义的学号和课号,所以选择 C。11.下列语句中,错误的是_。(分数:1.00)A.cons

    36、t int buffer=256;B.const int temp; C.const double *point;D.const double *rt=new double(5.5);解析:解析 const 是一个 C+语言的关键字,它限定一个变量不允许被改变。使用 const 在一定程度上可以提高程序的安全性和可靠性。限定符声明变量只能被读,必须初始化。B 选项中没有初始化,C 选项为指向常量的指针,定义时初始化与否均可,如果是 const*double point 形式,则为常指针,必须在定义时进行初始化,A、C、D 都正确。12.有如下程序: int x=3; do x- =2; cou

    37、tx; while(!(-x); 执行这个程序的输出结果是_。(分数:1.00)A.1B.3 0C.1-2 D.死循环解析:解析 本题考查 do.while 语句,执行 do.while 语句时,先执行循环体内的语句,然后判断while 中表达式的值,表达式为非零时,返回重新执行循环体语句。在本题中,先执行循环体内的语句,输出 1,然后判断表达式,为非零,且此时 x 为 0;再次执行循环体时,输出-2,然后判断表达式为 0,不执行,退出,所以答案为 C。13.有如下程序: #include iostream using namespace std; int main() int *p; *p=

    38、9; cout“The value at p:“*p; return 0; 编译运行程序将出现的情况是_。(分数:1.00)A.编译时出现语法错误,不能生成可执行文件B.运行时一定输出:The value at p:9C.运行时一定输出:The value at p:*9D.运行时有可能出错 解析:解析 先定义指针变量,然后给指针变量赋初值有三种情况:用取地址运算符“ int main() void function(double val); double val; function(val); coutval; return 0; void function(double val) val=

    39、3; 编译运行这个程序将出现的情况是_。(分数:1.00)A.编译出错,无法运行B.输出:3C.输出:3.0D.输出一个不确定的数 解析:解析 本题考查函数调用及传值方式传递参数,执行函数 function 时,并没有将 3 的值传回来,而 val 又没有初始化,所以会输出一个不确定的值,D 选项正确。21.下面是重载为非成员函数的运算符的函数原型,其中错误的是_。(分数:1.00)A.Fraction operator+(Fraction, Fraction);B.Fraction operator-(Fraction);C.Fraction D.Fraction解析:解析 本题考查四种运算

    40、符作为非成员函数的重载的使用方法,根据重载规则,本题答案为 C,C项正确原型为:Fraction operator=(Fraction ; 若要为 MyClass 类重载流输入运算符“”,使得程序中可以“cinobj;”的形式改变 MyClass 类的对象 obj 中数据成员 data 的值,则横线处的声明语句应为_。(分数:1.00)A.friend istream B.friend istreamC.istreamD.istream解析:解析 本题考查重载流运算符“”,根据重载规则,本题答案为 A。23.由于常对象不能被更新,因此_。(分数:1.00)A.通过常对象只能调用它的常成员函数

    41、B.通过常对象只能调用静态成员函数C.常对象的成员都是常成员D.通过常对象可以调用任何不改变对象值的成员函数解析:解析 本题考查常对象的基本知识,常对象只能调用它的常成员函数,而不能调用非 const 函数,常对象的成员函数不一定都是常成员函数,只需保证其数据成员是常数据成员即可。所以本题选 A。24.有如下类定义: class AA int a; public: int getRef() const return / int getValue() const return a;/ void set(int n)consta=n; / friend void show(AA aa)const

    42、couta;/ ; 其中四个函数的定义中正确的是_。(分数:1.00)A.B. C.D.解析:解析 本题考查常成员函数,常成员函数只能引用本类中的数据成员,而不能修改它。所以本题答案为 B。25.下列关于 this 指针的描述中,正确的是_。(分数:1.00)A.类的成员函数都有 this 指针B.类的友元函数都有 this 指针C.任何与类相关的函数都有 this 指针D.类的非静态成员函数都有 this 指针 解析:解析 this 作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员时,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。另外,全局函数和静态函数都不能使用 th

    43、is 指针。所以答案为 D。26.下列关于虚函数的说明中,正确的是_。(分数:1.00)A.从虚基类继承的函数都是虚函数B.虚函数不得是静态成员函数 C.只能通过指针或引用调用虚函数D.抽象类中的成员函数都是虚函数解析:解析 在某基类中声明为 virtual 并在一个或多个派生类中被重新定义的成员函数。虚函数必须是基类的非静态成员函数,其访问权限可以是 protected 或 public。如果一个类包含了纯虚函数,称此类为抽象类。所以本题答案为 B。27.下列关于基类和派生类关系的叙述中,正确的是_。(分数:1.00)A.每个类最多只能有一个直接基类B.派生类中的成员可以访问基类中的任何成员

    44、C.基类的构造函数必须在派生类的构造函数体中调用D.派生类除了继承基类的成员,还可以定义新的成员 解析:解析 本题考查派生类与基类的关系,派生类可以有多个直接基类,而派生类有三种继承方式,在私有继承中,派生类的成员并不能访问基类的成员。如果基类中定义了缺省构造函数或根本没有定义任何一个构造函数时,在派生类构造函数的定义中可以省略对基类构造函数的调用。所以本题答案为 D。28.有如下类定义: class B public: void fun1() private: void fun2() protected: void fun3() ; class D: public B protected: void fun4() ; 若 obj 是类 D 的对象,则下列语句中不违反访问控制权限的是_。(分数:1.00)A.obj. fun1(); B.obj. fun2();C.obj. fun3();D.obj. fun4();解析:解析 本题考查公用继承对基类成员的访问属性。在公用继承中,基类的公用成员和保护成员在派生类中保持原有的访问属性,其私有成员仍为基类私有。所以在本题中,在类外引用成员函数时,派生对象只能引用基类的公用成员函数 fun1,故本题答案为 A。29.有如下类定义: class Foo public: Foo(int v): value(v) / Foo() / pr


    注意事项

    本文(【计算机类职业资格】二级C++-16-1及答案解析.doc)为本站会员(explodesoak291)主动上传,麦多课文档分享仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文档分享(点击联系客服),我们立即给予删除!




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

    收起
    展开