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

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

1、国家二级 C+机试(类和对象)模拟试卷 6及答案与解析 一、选择题 1 有如下类声明: class Foo int bar; ; 则 Foo类的成员 bar是 ( )。 ( A)公有数据成员 ( B)公有成员函数 ( C)私有数据成员 ( D)私有成员函数 2 有如下类定义: class Foo public: Foo(int v): value(v) Foo() private: Foo() int value=0; ; 其中存在语法错误的行是 ( )。 ( A) ( B) ( C) ( D) 3 有如下类定义: class Test public: Test()a=0; c=0; ) in

2、t f(int a)constthis一 a=a; static int g()retum a; void h(int b)Test: b=b; ); private: int a: static int b: const int c; ; int Test: b=0; 在标注号码的行中,能被正确编译的是 ( )。 ( A) ( B) ( C) ( D) 4 有如下类声明: class SAMPLE int h: public: SAMPLE(int i=0): n(i) void setValue(int n0); ; 下列关于 getValue成员函数的实现中,正确的是 ( )。 ( A)

3、 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; 5 以下关键字不能用来声明类的访问权限的是 ( )。 ( A) public ( B) static ( C) protected ( D) prrvate 6 下列关于类定义的说法中,正确的是 ( )。 ( A)类定义中包括数据成员和函数成员的声明 ( B)类成员的缺省访问权限是保护的 ( C)数据成员必须被声明为私有的 ( D)成员函数只能在

4、类体外进行定义 7 如果派生类以 protected方式继承基类,则原基类的 protected成员和 public成员在派生类中的访问属性分别是 ( )。 ( A) public和 public ( B) public和 protected ( C) protected和 public ( D) protected和 protected 8 下列有关类成员的叙述中,正确的是 ( )。 ( A)友元函数是类的成员函数 ( B)类成员的默认访问权限是私有的 ( C)类成员函数必须声明为公有的 ( D)类的静态数据成员不能是常成员 9 下列运算符函数中,肯定不属于类 Value的成员函数的是 (

5、)。 ( A) Value operator+(Value); ( B) Value operator一 (Value, Value); ( C) Value operator*(int); ( D) Value operator (Value); 10 有如下程序: #inc1ude iostream #inc1ude cstring using namespace std; class XCD char*a: int b: public: XCD(char* aa, int bb) a=new charstrlen(aa)+1; strcpy(a, aa), b=bb; char* Get

6、a() return a; int Getb()return b; ; int main() char *p1=“abcd“, *p2=“weirong“; int d1=6, d2=8; XCD x(p1, d1), y(p2, d2); cout strlen(x Geta()+y Getb() end1; return0; 运行时的输出结果是 ( )。 ( A) 12 ( B) 16 ( C) 14 ( D) 11 11 有如下两个类定义: class AA; class BB AA vl, *v2; BB v3; int *v4; ; 其中有一个成员变量的定义是错误的,这个变量是 (

7、)。 ( A) v1 ( B) v2 ( C) v3 ( D) v4 12 有如下程序: #inc1ude iostream using namespace std; class Point int x, y; public: Point(int xl=0, intyl=0): x(xl), y(yl) int get() return x+y; ; class Circ1e Point center; int radius; public: Circ1e(int cx, int cy, int r): center(cx, cy), radius(r) int get() retum cen

8、ter get()+radius; ; int main() Circ1e c(3, 4, 5); cout c get() endl; return 0: 运行时的输出结果是 ( )。 ( A) 5 ( B) 7 ( C) 9 ( D) 12 13 若 AA为一个类, a为该类的私有整型数据成员, getA()为该类的一个非静态公有成员函数,功能是返回 a的值。如果 x为该类的一个对象,要在类外访问 x对象中 a的值,正确的访问格式为 ( )。 ( A) AA getA() ( B) x getA() ( C) x a ( D) AA: a 14 有如下类定义: class Myclass

9、int b; char a; double c; public: Myclass(): c(0 0), b(0), a(, ) ; 创建这个类的对象时,数据成员的初始化顺序是 ( )。 ( A) a, b, c ( B) c, b, a ( C) b, a, c ( D) c, a, b 15 下列关于类和对象的叙述中,错误的是 ( )。 ( A)一个类只能有一个对象 ( B)对象是类的具体实例 ( C)类是对某一类对象的抽象 ( D)类和对象的关系是一种数据类型与变量的关系 16 若有如下类声明 class Myclass public: Myclass() cout l; ) ; 执行下列

10、语句 Myclass a, b2, *p2: 以后,程序的输出结果是 ( )。 ( A) 11 ( B) 111 ( C) 1111 ( D) 11111 17 建立一个类对象时, 系统自动调用 ( )。 ( A)析构函数 ( B)构造函数 ( C)静态函数 ( D)友元函数 18 若 Myclass是一个类名,且有如下语句序列 Myclass c1, *c2; Myclass *c3=new Myclass; Myclass &c4=c1; 上面的语句序列所定义的类对象的个数是 ( )。 ( A) 1 ( B) 2 ( C) 3 ( D) 4 19 要定义一个引用变量 p,使之引用类 Myc

11、lass的一个对象,正确的定义语句是( )。 ( A) Myclassp=Myclass; ( B) Myclass p=new Myclass; ( C) Myclass &p=new Myclass; ( D) Myclass a, &p=a; 20 下列关于对象初始化的叙述中,正确的是 ( )。 ( A)定义对象的时候不能对对象进行初始化 ( B)定义对象之后可以显式地调用构造函数进行初始化 ( C)定义对象时将自动调用构造函数进行初始化 ( D)在一个类中必须显式地定义构造函数实现初始化 21 有如下程序: #inc1ude iostream using namespace std;

12、class Pair int m, n; public: Pair(int j, int k): m(j), n(k) int get() return m; int get()constreturn m+n, ; int main() Pair a(3, 5); const Pair b(3, 5); cout a get() b get(); return 0: 运行时的输出结果是 ( )。 ( A) 33 ( B) 38 ( C) 83 ( D) 88 22 有如下类定义: class Myclass int x; public: Myclass(): x(O), y(0) int Ge

13、tX() return x, void SetX(int xx) x=xx; int y; ; 已知 obj是类 Myclass的对象,下列语句中违反类成员访问控制权限的是 ( )。 ( A) obj x ( B) obj y ( C) obj GetX() ( D) obj SetX(0) 23 有如下程序: #inc1ude iostream using namespace std; class Point public: static int number; public: Pointo number+; Point( ) number一一; ; int Point: number一一

14、0; void main0 Point *ptr; Point A, B; Point* ptr_point=new Point3; ptxltrDoint; Point C; Gout+Point: number+endl; delete ptr; ( A) 3 ( B) 4 ( C) 6 ( D) 7 24 在下列函数原型中,可以作为类 AA构造函数的是 ( )。 ( A) voidAA(int); ( B) intAA(); ( C) AA(int) const; ( D) AA(int); 25 有如下类定义: class Point int x_, y_; public: Point

15、(): x_(0), y_(0) Point(int x, int y=0): x_(x), y_(y) ; 若执行语句 Point a(2), b3, *c4; 则 Point类的构造函数被调用的次数是 ( )。 ( A) 2次 ( B) 3次 ( C) 4次 ( D) 5次 国家二级 C+机试(类和对象)模拟试卷 6答案与解析 一、选择题 1 【正确答案】 C 【试题解析】 此题考查的是类的定义。在定义类的成员变量时,如果没有使用关键字;所有成员默认定义为 private私有权限。 【知识模块】 类和对象 2 【正确答案】 D 【试题解析】 此题考查的是类的定义。 C+语言规定,在类体内不

16、允许对所定义的数据成员进行初始化。 【知识模块】 类和对象 3 【正确答案】 D 【试题解析】 此题考查的是类的定义。一个类的长数据成员的初始化只能在成员初始化列表中进行,故选项 A错误;常成员函数不能更新对象的数据成员,故选项 B错误;静态成员函数可以直接访问类中说明的静态成员,但不能直接访问类中说明的非静态成员,故选项 C错误。 【知识模块】 类和对象 4 【正确答案】 B 【试题解析】 此题考查了成员函数的定义格式。在类外部对成员函数 定义时的一般格式为:返回类型类名:成员函数名(参数表) 函数体 ,故此题正确答案为选项 B。 【知识模块】 类和对象 5 【正确答案】 B 【试题解析】

17、此题考查的是类的访问权限。在 C+语言中,类的访问权限有公有、保护和私有三种。故本题选 B。 【知识模块】 类和对象 6 【正确答案】 A 【试题解析】 此题考查的是类的定义。类中缺省的访问权限是私有的,所以选项B错误;类的数据成员和成员函数的访问控制权限均可被声明为公有、私有和保护中的一种,所以选项 C错误;成员函数的实现可以在类体内定义,也可以在类体外定义,所以选项 D错误。 【知识模块】 类和对象 7 【正确答案】 D 【试题解析】 此题考查的是基类成员在派 生类中的访问属性。派生类中的成员不能访问基类中的私有成员,可以访问基类中的公有成员和保护成员。派生类从基类公有继承时,基类的公有成

18、员和保护成员在派生类中仍然是公有成员和保护成员;派生类从基类私有继承时,基类的公有成员和保护成员在派生类中都变成私有成员;派生类从基类保护继承时,基类的公有成员在派生类中变成保护成员,基类的保护成员在派生类中仍然是保护成员。 【知识模块】 类和对象 8 【正确答案】 B 【试题解析】 此题考查的是类成员的有关概念。类的友元函数可以直接访问该类的所有成员,但它不是类 的成员函数,故选项 A错误;类成员函数的访问权限可以声明为公有、保护、私有,故选项 C错误;静态数据成员的声明是使用关键字static它可以是常成员,故选项 D错误。 【知识模块】 类和对象 9 【正确答案】 B 【试题解析】 运算

19、符作为非成员函数时,由于没有隐含 this指针,因此所有的操作数必须出现在参数表中。对于第二个选项,出现了两个操作数,必然是非成员函数,但是对于其他三个选项,有可能都是要求两个操作数的成员函数。 【知识模块】 类和对象 10 【正确答案】 A 【试题解析 】 由类 XCD的定义可知,成员函数 Geta()返回的是字符串的长度,Getb0返回的是参数 b的值。在主函数中 strlen( x Geta(的值等于 4,y Getb()的值等于 8,所以输出两者的和为 12。 【知识模块】 类和对象 11 【正确答案】 C 【试题解析】 在定义类的数据成员时,类中的数据成员可以是任意类型,包括整型、浮

20、点型、字符符型、数组、指针和引用等,也可以是对象。但是要注意,只有另外一个类的对象,才可以作为该类的成员,即作为类的成员对象存在。自身类的对象是不可以作为自身类的成员 存在,但自身类的指针可以。对于本题,在定义类 BB时,不能包括其对象 v3。 【知识模块】 类和对象 12 【正确答案】 D 【试题解析】 根据类 Point和类 Circle的定义可知,类 Circle的实例 c( 3, 4,5)的成员函数 c get()返回值为 3+4+5=12。 【知识模块】 类和对象 13 【正确答案】 B 【试题解析】 要在类外访问 x对象中 a的值,必须调用类的非静态公有成员函数getA( )。 【

21、知识模块】 类和对象 14 【正确答案】 C 【试题解析】 类的成员初始化顺序与成员变量在构造函数中的位置先后顺序无关,只与成员变量在类中定义的先后顺序有关。 【知识模块】 类和对象 15 【正确答案】 A 【试题解析】 此题考查的是类和对象的概念。类是用户定义的 种数据类型,可以使用这个类型来说明一个或多个变量,即对象。 【知识模块】 类和对象 16 【正确答案】 B 【试题解析】 此题考查的是对象的构造。本题共声明了一个 MyClass对象 a,一个包含 2个 MyClass对象的数组 b和 个包含 2个 MyClass对象指针的 数组 p,所以一共创建了 3个 MyClass类的对象,即

22、调用了 3次构造函数。 【知识模块】 类和对象 17 【正确答案】 B 【试题解析】 建立 个类的对象时,编译程序需要为对象分配存储空间,进行必要的初始化。在 C+中,这项工作是由构造函数来完成。 【知识模块】 类和对象 18 【正确答案】 C 【试题解析】 C1、 *C2、 C3是 3个 MyClass对象, C4是 MyClass对象的引用,它是对象 C1的别名。 【知识模块】 类和对象 19 【正确答案】 D 【试题解 析】 在选项 D)中,定义了 MyClass类的一个对象 a和引用变量 p,并且声明 p初始化为对 a的引用。 【知识模块】 类和对象 20 【正确答案】 C 【试题解析

23、】 建立对象时根据给定的参数调用相应的构造函数对对象进行初始化。无参数时表示调用缺省构造函数。构造函数在对象被创建时由系统自动调用。 【知识模块】 类和对象 21 【正确答案】 B 【试题解析】 在主函数中定义了类 Pair的一个实例变量 a,并分别对实例变量 a的数据成员 m, n赋初值 3, 5。所以调用 a get()成员函数时, 输出 3。又定义类Pair的 个常实例变量 b,并分别对实例变量 b的数据成员 m, n赋初值 3, 5。所以调用成员函数 b get0时,输出 8。 【知识模块】 类和对象 22 【正确答案】 A 【试题解析】 由类 MyClass的定义可知,数据成员 x属

24、于私有成员,所以只能在类的内部访问。类 MyClass的对象 obj不能访问类 MyClass的私有成员 x。 【知识模块】 类和对象 23 【正确答案】 C 【试题解析】 此题是静态成员、对象的构造和对象的生存期等知识点的综合考查。此题定义了一个静 态成员变量 number初始值为 0。主函数中第 2行定义了。 2个 Point对象,此时 number变为 2;随后 new运算符又定义了一个包含 3个 Point对象元素的数组,其通过 delete结束后 number的值变为 5;然后又定义了 个 Point对象 C, number咬为 6;最后输出 number的内容。 【知识模块】 类和

25、对象 24 【正确答案】 D 【试题解析】 此题考查的是构造函数的概念。构造函数是类的一个特殊成员函数,它与类同名,并且没有返回值。选项 A、 B不符合要求。选项 C中函数 AA,会更新对象 的数据成员。 【知识模块】 类和对象 25 【正确答案】 C 【试题解析】 此题考查的是类的构造函数。构造函数在对象创建的时候由系统自动调用。在 Point a( 2), b3, *c4语句中: a( 2)是定义一个对象并传入构造函数 2,所以此时会调用以此构造函数: b3是定义 个包含 3个对象的数组,所以构造函数会被调用 3次; *c4定义的足 4个 Point类对象指针的数组,它并没有创建任何 Point对象,所以不调用构造函数。 【知识模块】 类和对象

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

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

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