【计算机类职业资格】二级C++-170及答案解析.doc
《【计算机类职业资格】二级C++-170及答案解析.doc》由会员分享,可在线阅读,更多相关《【计算机类职业资格】二级C++-170及答案解析.doc(23页珍藏版)》请在麦多课文档分享上搜索。
1、二级 C+-170 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:28,分数:70.00)1.下列关于成员访问权限的描述中,不正确的是_。(分数:2.50)A.公有数据成员和公有成员函数都可以被类对象直接处理B.类的私有数据成员只能被公有成员函数以及该类的任何友元类或友元函数访问C.只有类或派生类的成员函数和友元类或友元函数可以访问保护成员D.保护成员在派生类中可以被访问,而私有成员不可以2.在下面的类定义中,错误的语句是_。 class Sample public: Sample(int val); /A Sample(); /B private: int a=2
2、.5; /C Sample(); /D ; (分数:2.50)A.B.C.D.3.下列关于构造函数的描述中,错误的是_。(分数:2.50)A.构造函数可以设置默认参数B.构造函数在说明类变量时自动执行C.构造函数可以对静态数据成员进行初始化D.构造函数可以重载4.假定 MyClass 为一个类,执行 MyClass a3, *p2;语句时会自动调用该类构造函数_次。(分数:2.50)A.2B.3C.4D.55.假定 MyClass 为一个类,则该类的拷贝构造函数的声明语句为_。(分数:2.50)A.MyClassB.MyClass (MyClass x)C.MyClass (MyClass D
3、.MyClass (MyClass *x)6.对于常成员函数,下面描述正确的是_。(分数:2.50)A.常成员函数只能修改常数据成员B.常成员函数只能修改一般数据成员C.常成员函数不能修改任何数据成员D.常成员函数只能通过常对象调用7.一个类的友元函数或友元类能够通过成员操作符访问该类的_。(分数:2.50)A.私有成员B.保护成员C.公用成员D.公用成员、保护成员和私有成员8.下面对静态数据成员的描述中,正确的是_。(分数:2.50)A.静态数据成员是类的所有对象共享的数据B.类的每个对象都有自己的静态数据成员C.类的不同对象有不同的静态数据成员值D.静态数据成员不能通过类的对象调用9.对于
4、下面定义的类 MyClass,在函数 f()中将对象成员 n 的值修改为 50 的语句应该是 class MyClass public: MyClass(int x) n=x; void SetNum(int nl) n=nl; private: int n; int f() MyClass *ptr=new MyClass(45); _ (分数:2.50)A.MyClass(50)B.SetNum(50)C.ptr-SetNum(50)D.ptr-n=5010.下面是类 MyClass 的定义,对定义中各语句描述正确的是_。 class MyClass public: void MyClas
5、s(int a) X=a; / int f(int a,int b) / X=a; Y=b; int f(int a,int b, int c=0) / X=a; Y=b; Z=c; static void g() X=10; / private: int X, Y, Z; ;(分数:2.50)A.语句是类 MyClass 的构造函数定义B.语句和语句实现类成员函数的重载C.语句实现对类成员变量 X 的更新操作D.语句、和都不正确11.下列对派生类的描述中,错误的是_。(分数:2.50)A.一个派生类可以作为另一个派生类的基类B.派生类至少有一个基类C.派生类的默认继承方式是 privateD
6、.派生类只继承了基类的公有成员和保护成员12.下列说法中错误的是_。(分数:2.50)A.公有继承时基类中的 public 成员在派生类中仍是 public 的B.公有继承时基类中的 private 成员在派生类中仍是 private 的C.私有继承时基类中的 puhlic 成员在派生类中是 private 的D.保护继承时基类中的 public 成员在派生类中是 protected 的13.派生类的构造函数的初始化列表中,不能包含_。(分数:2.50)A.基类的构造函数B.派生类中成员对象的初始化C.基类中子对象的初始化D.派生类中一般数据成员的初始化14.下列关于多继承二义性的描述中,错误
7、的是_。(分数:2.50)A.一个派生类的两个基类巾都有某个同名成员,在派生类中对这个成员的访问可能出现二义性B.解决二义性的最常用的方法是对成员名的限定法C.基类和派生类中国时出现的同名函数,也存在二义性问题D.一个派生类是从两个基类派生出来的,而这两个基类又有一个共同的基类,对该基类成员进行访问时,可能出现二义性15.下列虚基类的声明中正确的是_。(分数:2.50)A.class virtual B: public AB.virtual class B: public AC.class B: public A virtualD.class B: virtual public A16.带有虚
8、基类的多层派生类构造函数的初始化列表中都要列出虚基类的构造函数,这样将对虚基类的子对象初始化_。(分数:2.50)A.与虚基类下面的派生类个数有关B.多次C.二次D.一次17.下列关于子类型的描述中,错误的是_。(分数:2.50)A.子类型关系是可逆的B.公有派生类的对象可以初始化基类的引用C.只有在公有继承下,派生类是基类的子类型D.子类型关系是可传递的18.下面的叙述中,不符合赋值兼容规则的是_。(分数:2.50)A.派生类的对象可以赋值给基类的对象B.基类的对象可以赋值给派生类的对象C.派生类的对象可以初始化基类的引用D.派生类的对象的地址可以赋值给指向基类的指针19.下面的叙述中错误的
9、是_。(分数:2.50)A.派生类可以使用 private 派生B.对基类成员的访问必须是无二义性的C.基类成员的访问能力在派生类中维持不变D.赋值兼容规则电适用于多继承的组合20.下列程序中画线处正确的语句是_。 #include iostream using namespace std; class Base public: void fun() cout“Base: fun“endl; ; class Derived: public Base void fun() _ /显式调用基类的函数 fun() cout“Derived: fun“endl; ;(分数:2.50)A.fun();B
10、.Base.fun();C.Base:fun();D.Base-fun();21.虚函数必须是类的_。(分数:2.50)A.成员函数B.友元函数C.构造函数D.析构函数22.关于虚函数,下列表述中正确的是_。(分数:2.50)A.如果在重定义虚函数时使用了关键字 virtual,则该重定义函数是虚函数B.虚函数不得声明为静态函数C.虚函数不得声明为另一个类的友元函数D.派生类必须重新定义基类的虚函数23.关于纯虚函数,下列表述中正确的是_。(分数:2.50)A.纯虚函数是没有给出实现版本(即无函数体定义)的虚函数B.纯虚函数的声明总是以“=0;”结束C.派生类必须实现基类的纯虚函数D.含有纯虚
11、函数的类不可能是派生类24.多态调用是指_。(分数:2.50)A.以任何方式调用一个虚函数B.以任何方式调用一个纯虚函数C.借助于指向对象的基类指针或引用调用一个虚函数D.借助于成员访问运算符。调用一个虚函数25.关于抽象类,下列表述中正确的是_。(分数:2.50)A.抽象类的成员函数中至少有一个是没有实现的函数(即无函数体定义的函数)B.派生类必须实现作为基类的抽象类中的纯虚函数C.派生类不可能成为抽象类D.抽象类不能用来定义对象26.有如下程序: #include iostream using namespace std; class BASE char c; public: BASE(c
12、har n):c(n) virtual BASE()coutc; ; class DERIVED:public BASE char c; public: DERIVED(char n):BASE(n+1),c(n) DERIVED() coutc; ; int main() DERIVED(“X“); return 0; 执行上面的程序将输出_。(分数:2.50)A.XYB.YXCXDY27.有如下程序: #include iostream using namespace std; class AA public: virtual void f()cout“AA“; ; class BB:pu
13、blic AA public: BB()cout“BB“; ; class CC:public BB public: virtual void f() BB:f(); cout“CC“; ; int main() AA aa, *p; BB bb; CC cc; p= p-f(); return 0; 执行上面的程序将输出_。(分数:2.50)A.BBAACCB.AABBCCC.BBAABBCCD.BBBBAACC28.有如下程序: #include iostream using namespace std; class XX protected: int k; public: XX(int
14、n=5):k(n) XX() cout“XX“; virtual void f() const=0; ; inline void XX:f() const coutk+3; class YY:public XX public: YY()cout“YY“; void f()const coutk-3; XX:f(); ; int main() XX p.f(); delete return 0; ; 执行上面的程序将输出_。(分数:2.50)A.28XXB.28YYXXC.-33XXD.-33XXYY二、填空题(总题数:10,分数:23.00)29.用 class 定义的类中的数据和成员函数默认
15、类型为 1。 (分数:0.50)30.如果类的成员对象不提供成员初始化值,则调用该对象的 1。 (分数:2.50)31.在 C+语言中,每个类都有一个隐含的指针叫做 1 指针。该指针指向 2。 (分数:2.50)32.如果一个类中定义了成员对象,则该类的对象和成员对象先被初始化的是 1。 (分数:2.50)33.有如下定义语句:MyClass *p;,则执行 p=new MyClass;语句时,将自动调用该类的 1。执行 delete p;语句时,将自动调用该类的 2。 (分数:2.50)34.非成员函数应声明为类的 1 才能访问这个类的 private 成员。 (分数:2.50)35.若要把
16、类 FriendClass 定义为类 MyClass 的友元类,则应在类 MyClass 的定义中加入语句 1。 (分数:2.50)36.下面的类定义了复制构造函数,请完成该类的定义和实现。 class MyClass public: MyClass(int xx=0, int yy=0) X=xx;Y=yy; 1; /拷贝初始化构造函数 private: int X,Y; ; MyClass: 2 /拷贝初始化构造函数的实现 X= 3; 4; (分数:2.50)37.下列程序在构造函数和析构函数中申请和释放类的私有成员,请完成该类的实现。 class MyClass public: MyCl
17、ass(int a); MyClass(); private: int *X; ; MyClass: MyClass(int a) 1; MyClass:MyClass() 2; (分数:2.50)38.下列程序通过把类 Distance 定义为类 Point 的友元类来实现计算两点之间距离的功能。请完成该程序。#include iostream #include cmath using namespace std; class Point public: 1; Point ( 2) X=a; Y=b; void Print() cout “X=“Xendl; cout “X=“Xendl;
18、private: float X, Y; ; class Distance public: float Dis(Point ; float Distance: Dis (Point 3; coutx resultendl; return result; int main() Point p(10, 10), q(20, 20); Distance d; d. Dis(p, q); return 0; (分数:2.50)三、阅读程序题(总题数:3,分数:7.00)39.写出下列程序的运行结果。 #include iostream using namespace std; class ClassO
19、ne public: ClassOne (); ClassOne (int value); ClassOne (); void Print(); private: int i; ; class ClassTwo public: ClassTwo (); ClassTwo (int value); ClassTwo(); void Print(); private: ClassOne myclass; int i; ; ClassOne:ClassOne() :i(0) cout “Constructor of ClassOne!“ endl; ClassOne: ClassOne(int va
20、lue) :i(value) cout “Constructor of ClassOne! “ endl; ClassOne: ClassOne() cout “Destructor of ClassOne! “ endl; void ClassOne:Print() const cout “The i of ClassOne is “ i endl; ClassTwo:ClassTwo() :i(0) cout “Constructor of ClassTwo!“ endl; ClassTwo: ClassTwo(int value) :i(value) cout “Constructor
21、of ClassTwo!“ endl; ClassTwo: ClassTwo() cout “Destructor of ClassTwo!“ endl; void ClassTwo:Print() const cout “The i of ClassTwo is“ i endl; int main() ClassTwo myclass(10); myclass.Print(); return 0; (分数:2.50)_40.写出下列程序的运行结果。 #include iostream using namespace std; class MyClass public: MyClass();
22、MyClass(); void SetValue(int val); private: int i; ; MyClass:MyClass() :i(0) cout “This is a constructor! i=“ i endl; MyClass: MyClass() cout “This is a destructor! i=“ i endl; void MyClass:SetValue(int val) i=val; cout “i =“ i endl; int main() int k; MyClass my3, *p; p=my; for (k=0; k3; k+) p-SetVa
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 职业资格 二级 C170 答案 解析 DOC
