|
一、单选题(共 35 道试题,共 70 分。)V 1. 在C++中,通过()的机制可以扩充和完善旧的程序设计以适应新的需要。3 ^7 L& A- f, Z5 Z( a& X4 l
A. 继承( w: }2 V6 A/ L3 E4 u( l" n
B. 封装7 i2 N/ n; s A" @
C. 多态
- i2 J t* G8 {D. 重载
% B$ a& }+ ?9 M( k 满分:2 分
# I: x" v2 J; I0 b2. 下面关于类的成员函数描述不正确的是()。
/ |- o% K p5 h' z# P$ ?4 T% RA. 静态成员函数内可以直接访问类的非静态成员数据5 d( a5 d, p1 _& }1 O
B. 静态成员函数内可以直接访问类的静态成员数据( B0 }0 b A+ `- [: p$ O7 J1 Z# [# M
C. 非静态成员函数可以直接访问类的非静态成员数据+ k w# S& |, `% J# \* k+ W
D. 非静态成员函数可以直接访问类的静态成员数据- b2 w7 X( \' s: i2 }- o0 Z- Y
满分:2 分* F3 N+ z; `! L# Q. S
3. 下列对派生类的描述中错误的是()。
6 h: g$ y" U: O6 R l! a9 l; o# @A. 派生类至少有一个基类$ e/ [7 Y8 w$ W# N
B. 派生类可作为另一个派生类的基类
4 j, v9 ?) l) `0 E9 d; |+ v3 {% H1 uC. 派生类除了包含它直接定义的成员外,还包含其基类的成员
) {- \ f& c! E( C4 @- e) ?D. 派生类对其继承的基类的成员访问权限保持不变3 P7 P2 {/ A. v5 e) _
满分:2 分
) ? Q/ G& L6 w/ i9 U6 o4. 下面对C++运算符描述正确的是()。
& E) s# |9 C+ j0 u# z/ rA. 只有类成员运算符
) c! U. x% d% X. K$ J: v, RB. 只有友元运算符" m8 X; o% m4 ?! _8 ?& T& w
C. 只有非成员和非友元运算符
6 w" m g, r* @, n* B bD. 以上三者都有1 S8 \; ]7 Y- _6 _- ?/ I+ H
满分:2 分' a8 y9 {& c( Z' i
5. 下列关于this指针的说法,正确的是()。9 Z0 N. \- |# x3 V: z
A. this指针一定指向常量型数据7 o8 A# U' y4 \0 s
B. this指向的数据不可更改
& p3 q2 k9 i/ H0 K, GC. 静态成员函数中也可以访问this指针
% U4 M I# q+ H% D$ k1 L+ ^2 o; HD. this指针本身可直接作为成员函数的返回值7 p1 z" B! @4 l4 q" E8 ^3 m! d! E
满分:2 分9 j% @; L- `; B) u
6. 在类的定义中,用于为对象分配内存空间,对类的数据成员进行初始化并执行其他内部管理操作的函数是()。8 R. x. U; X: N" ?2 n( j4 v
A. 友元函数* `& l3 M A5 L
B. 虚函数" J# T4 }8 f+ u5 k+ w7 c
C. 构造函数
8 } [, ] }7 |. b% H0 f8 }D. 析构函数
9 L( v3 n3 X6 t1 d- W" _ 满分:2 分
8 O8 n# h4 i4 N# L- z. {7. 假定MyClass为一类,执行MyClass a,b(2),*p[2];语句时会自动调用该类构造函数()次。
1 e5 B. K y d ?% k$ K/ P4 UA. 2
: t8 K8 K; b6 {4 y( S+ uB. 3. `: x' a, e* Z, _
C. 48 [8 u5 Y% d' l: T+ k, f( b
D. 5
$ E; P# q/ y7 m# M( X6 r 满分:2 分# p: ~. T5 P& n9 |% M1 o
8. 类的默认的无参构造函数()。8 x& [; f7 ^$ }. z
A. 在任何情况下都存在0 ?6 @+ _( ^; \ ? D
B. 仅当未定义无参构造函数时存在8 m; G) i8 i) B& A
C. 仅当未定义有参构造函数时存在: U3 B, k8 M$ P% z
D. 仅当未定义任何构造函数时存在
* F3 o7 Q" \1 i, Y 满分:2 分+ F) A! _, f' f4 Z
9. 如果类A被说明成类B的友元,则()。0 l3 \ g4 H7 ^6 P/ l
A. 类A的成员函数不得访问类B的所有成员
; [ v; F5 U/ c" SB. 类A的成员函数可以访问类B的所有成员$ d( d1 b0 A5 l, x8 Y1 ]
C. 类A的成员即类B的成员
# i: ^; S2 c; RD. 类B的成员即类A的成员
5 c3 `/ m* S$ H9 `+ S( V 满分:2 分; r; z$ M3 D8 U
10. 下列关于类和对象的叙述中,错误的是()。$ I, @% d; y+ B$ J! }7 v+ z; C
A. 一个类只能有一个对象2 X. G3 _3 g4 Q" x; o( p
B. 对象是类的具体实例! V4 x1 j- u2 S; r5 m: ^
C. 类是某一类对象的抽象& A) k! }( R- p$ }8 L, v
D. 类和对象的关系是一种数据类型与变量的关系
0 X2 }+ v# S0 H; e# l, @2 W( q 满分:2 分) `. p7 B6 _, q- X2 c! E+ ?
11. 有关重载函数的描述正确的是()。
! _. d% z5 E( R CA. 函数名相同的函数就是重载函数
u+ _( e; M9 k9 v. u8 a" IB. 函数名相同但返回值类型不同的函数就是重载函数( C' c) g' f/ P: Y0 a
C. 函数名相同但参数个数或类型不同的函数就是重载函数( F# m2 ]0 U. Q8 i9 f' W x
D. 函数功能相同的函数就是重载函数
: ^5 {4 J' h0 V7 K: c3 Y% z 满分:2 分/ a: J' F M3 C
12. 对于虚析构函数与一般虚函数,以下说法正确的是()。( m: O3 ?' R; {- P4 s( y; J: F
A. 重定义函数就是派生类的构造函数
. o7 p( N9 X: \) M, P" TB. 重定义函数就是派生类的析构函数,要求同名
6 T' h" A0 w! Y3 Q2 z7 Z+ I$ R& }( @C. 一个虚析构函数的版本被调用执行后,接着就要执行其基类版本
$ H# \/ M6 x! \% y; {) a: C! WD. 基类和派生类都分别给出了一个虚函数的不同版本
9 X! N! D9 k$ [, f) G6 ] 满分:2 分7 w# ?% `: W% K3 C9 W% K3 o
13. 利用成员函数对二元运算符重载,其右操作数为()。
+ |& C6 p; V/ ]4 GA. this指针
; D: ]0 ]( @+ X7 jB. 成员函数参数& x+ B' X B2 b; b5 S# Y$ K
C. 非静态成员函数操作数
4 v0 b- F& ^$ e: p8 n1 z) X9 q; J: uD. 实参& f$ P9 x! j) m5 X& c* `) o
满分:2 分0 \0 D- G2 s7 a2 x/ ?2 V8 [
14. 下列关于动态联编的描述中,错误的是()。* r) c& l3 k) U2 \+ b: L
A. 动态联编是以虚函数为基础的4 N& G% U2 w, ?' b
B. 动态联编是在运行时确定所调用的函数代码的2 j% P" y+ Y) V
C. 动态联编调用函数操作是通过指向对象的指针或对象' @. L( h y5 C( R: l1 `4 N$ Y
D. 动态联编是在编译时确定操作函数的
1 L, S# A7 q# Q9 Y Q& H 满分:2 分5 w) E( M# f. ~$ e' m5 ?
15. 下列关于构造函数说法不正确的是()。
' B9 ^1 K# `2 y* z2 JA. 构造函数必须与类同名
. g2 p L) q# N/ i& T3 o) a0 ^( m4 }B. 构造函数可以省略不写) O9 l3 g& l0 y! C
C. 构造函数必须有返回值1 w& o! @5 j+ }' N. E/ T: p& w
D. 在构造函数中可以对类中的成员进行初始化
1 e0 N. H4 i+ ] 满分:2 分
$ Z0 {; ^- J' x16. 在一个string类对象表示的字符串中查找子串,应该使用string类的()函数。
- j" y, G3 D1 i( O8 u0 Q, hA. assign
& B- ^5 U$ e% }2 UB. insert
" \% Y/ m" s; w0 t" D" ^7 [C. swap' S9 h1 m) ]: I, n2 P
D. find% e! Q4 W; ?; L H$ \
满分:2 分2 Y& [+ i; f* D
17. 通常的拷贝构造函数的参数是()。
$ [: I7 D* G! T5 LA. 某个对象名
d, u9 k7 t7 r" d4 i. zB. 某个对象的成员名
. d' g5 z; P: G- v. Z/ qC. 某个对象的引用名
) o- R1 i3 o2 Y; J% lD. 某个对象的指针名8 @6 V/ L3 t( b. W' m
满分:2 分
, l! J2 \+ O; {& R" u* L) {18. 关于纯虚函数和抽象类的描述中,错误的是()。8 E& b& r: t5 v; {* `( N0 S+ B+ ]
A. 纯虚函数是一种特殊的虚函数,它没有具体的实现。
% w+ D2 A) X! F3 M4 J$ qB. 抽象类是指具有纯虚函数的类。" N& p. \# M% y" {" P8 B8 f1 x
C. 一个基类中有纯虚函数,该类的派生类一定不再是抽象类。
8 a D) C/ v) {1 f7 f4 x: BD. 抽象类作为基类来使用,其纯虚函数的实现由派生类给出。3 t: A0 z, C2 n( Y, \
满分:2 分
& G8 [7 ?! G% X& q19. 在派生类中重新定义虚函数时,除了(),其他方面都应与基类中相应的虚函数保持一致。
, d' B. e9 |, o |. z. S% ?A. 函数名% o6 L6 B0 X# C: g
B. 参数) v+ r3 Z; m$ O! b% R
C. 函数体1 w N E8 z$ d# u8 H' T9 k
D. 返回值类型8 ?' c" W: e' J% P! D. n. L, v
满分:2 分/ }+ L w( ^; O" v
20. 已知“int a=10;int &r=a; r=r+20;cout<<a;”,则输出为()。
9 F) n% x# J L ^/ ]+ v) [' OA. 10! k: w* A) J1 i/ [2 r+ Y+ \$ N F
B. 20% v* b G+ E7 n; P3 m! y% L9 U3 O
C. 30
# X, c+ \# Y/ ZD. 不确定值
7 g9 F3 @4 U2 L8 X3 E2 {: I 满分:2 分; l# E5 }4 s: j5 P f; k
21. 派生类中的成员不能访问基类中的()。
2 h5 g( [+ G/ e% x& }2 w& MA. 私有成员" ~7 Z* Y- D2 L* X ~/ |
B. 公有成员
3 G9 G' v7 B9 Q& n+ ` U- g/ x3 B8 XC. 保护成员3 _0 |' j: l- p+ D; B9 D/ Z
D. 以上都可以) E/ G4 }) \; Y9 u% d1 A( Y6 S
满分:2 分# S" ?. C% c0 @- t7 R% `
22. 下列关于继承的描述中,错误的是()。/ N2 T+ D$ {% f' V, o
A. 析构函数不能被重载
( S# p/ o0 A4 D% c' L8 p5 dB. 派生类是基类的组合7 b0 ^ _! u+ h5 V
C. 派生类的成员除了它自己的成员外,还包括了它的基类成员
4 |1 A6 A9 ~! e$ ^8 R$ ?/ rD. 派生类中基类成员的访问权限到派生类保持不变 J1 _* e" g" S8 W' X" G' U5 ]
满分:2 分
2 c8 F/ H# o* o$ I8 `2 }23. 下列虚基类的声明中,正确的是()。
8 L" W7 P& o- eA. class virtual B:public A
$ E& P5 F6 N$ g$ h& F* e/ q( a8 PB. virtual class B:public A+ u; Y" b/ u1 o" M! ~: U( c
C. class B: public A virtual1 O, g+ r2 g. s3 @/ U; x
D. class B: virtual public A& N8 N- ^+ O" j. K$ o2 ]- c
满分:2 分 f2 ` _9 m' `6 H$ p4 m
24. 派生类的构造函数的成员初始化列表中,不能包含()。
_" M. s6 K: L( f. D6 aA. 基类的构造函数! @; u1 ?, t% P3 {
B. 派生类中子对象的初始化
) {) P3 y9 c5 YC. 基类的子对象初始化. d# U5 g0 R$ u; Y: A0 R
D. 派生类中一般数据成员的初始化, ^+ B ?- o& f! Y0 L
满分:2 分+ S* u. V) P! O {" k& o) B
25. 任意一个类,析构函数的个数最多是()。+ F, R, C* {4 K, k+ N, F8 w$ [
A. 不限个数. y, W; i! m2 m9 s+ @& j6 ?
B. 19 Z2 v6 E; H' p, V# @
C. 21 \! a. r+ B8 u; W @+ j: y
D. 37 F' i( k, M$ S2 `
满分:2 分
- N) l- `' Y# ~26. 下列关于主函数的叙述中正确的是()。6 C, _) u; H5 ^& g
A. 一个程序可以有多个主函数
4 d' C! j- ^& |; z/ j9 ]1 U1 \B. 程序从主函数开始执行
1 a$ e7 \9 a Q4 [+ lC. 一个程序可以没有主函数
/ z3 z i& }! t: r- tD. 主函数是一个特殊的函数,因此其结构与其他函数不同
- j6 h, A9 d; _1 j/ b 满分:2 分% b! e3 ]. A: y% o2 `0 o
27. 已知“int a=10,*p;int *&r=p; r=&a;*r=20;cout<<a;”,则输出为()。
! v* F: H0 j! n1 K; wA. 10
9 m ^$ n' }) C: k" |B. 20; w, t. a1 \$ P8 t3 m- d- a
C. 不确定值
% F, d1 u1 `' p8 S A' sD. 程序有错误
1 i3 y8 V% K9 E 满分:2 分
4 [& d( f4 U6 S1 O9 C- x28. 下面描述中,错误的是()。; ^/ w- G( ^* j+ Q5 X9 g
A. 公有继承时,基类中的public成员在派生类中仍是public的
; F3 i7 i; h! t8 K* m0 GB. 公有继承时,基类中的private成员在派生类中仍是private的/ U+ {; q' { u$ H C
C. 公有继承时,基类中的protected成员在派生类中仍是protected的/ \* E# l, O2 j1 M
D. 私有继承时,基类中的public成员在派生类中是private的* b* Z7 i( s6 m' L
满分:2 分/ ? S1 F& H* F. w9 ?6 u3 P
29. 单目运算符作为类成员函数重载时()。$ {- `. E% [3 ~5 ]3 b, R
A. 有形参, D4 S( Z, s B
B. 没有形参
$ u0 t4 E4 l7 S" J# _8 ]% oC. 有实参
4 W& b1 O( r* _' gD. 以上都不正确4 B( E6 j( V, B* V5 B7 F+ B2 n- ]
满分:2 分
/ W$ p- V, C0 ~& x: r30. 在一个C++源文件中使用了cin和cout,那么在这个源文件中必须包含()文件。
' q2 j' W6 O" K2 L' MA. iostream7 p8 ]4 a1 Z; P$ z# P6 S
B. fstream
- V7 a( ~: D! u4 ?" o( _& q/ `C. stdio.h3 T5 J! u' p) H; o
D. stdlib.h
& Y$ O, M5 [, W9 v% e, ^/ H 满分:2 分
5 e6 F- p% c$ F" e' N! k+ J$ e* s2 M! v31. 虚函数必须是类的()。
, D$ j- P. \0 b1 LA. 友元函数
8 m8 v, E: _0 K& Z, h4 H4 @4 I$ u+ y2 KB. 成员函数4 d, B1 i$ ?2 N# U$ n
C. 构造函数
4 u8 ]& P- S& G, v0 v& bD. 析构函数
9 t4 l- }" p3 {8 J 满分:2 分4 r! W. t, ] u" A2 z
32. 已知函数原型:void f(int a, int b=3,char c='*'); 则下面的函数调用中,不合法的调用是()。
6 Z' O; |! F1 d5 \ j5 LA. f(5)
: I' E+ M9 i4 H/ G5 P* ]5 t( k3 OB. f(5,8)$ P. \ c7 f3 ]
C. f(6, , '#')% c8 x2 L$ G" _
D. f(0,0, '#'): Y) e) c2 x: F& }6 z
满分:2 分
0 V+ G4 s+ l$ B- v# r33. 下列关于运算符重载正确的是()。5 V0 o/ n0 g. X. Q- }4 B8 H' F; {" A
A. 运算符重载可以改变运算符的操作数个数
5 W9 V: _+ }+ Z' c' m9 eB. 运算符重载可以改变运算符的优先级" g/ W5 I/ f: I' @ b4 w
C. 运算符重载可以改变运算符的结合性9 p6 _" p, x; Z) h- x) z* L) p0 E; }3 q
D. 运算符重载不可以改变语法结构
: N7 Q5 M' i! T 满分:2 分9 x0 X& h6 g/ k! ?
34. 交换两个string类对象所表示的字符串的内容,应该使用string类的()函数。2 q& i- E% e3 ^: l
A. assign/ R# A4 N$ p7 K K. \
B. insert
; O9 t% x; r. r1 y. [ A: sC. swap& Z( S6 ~6 O% X: s+ A$ r
D. find
3 b/ b" ?: H: i: W* V 满分:2 分+ }* x* C* V0 V' \
35. 下列关于运算符重载的描述中,正确的是()。
% I1 T6 r# Q9 t; P* kA. 运算符重载可以改变操作数的个数5 V3 s" W% j4 e7 B3 t6 _
B. 运算符重载可以改变运算符的优先级4 |/ a0 z2 m* ?* O6 g$ A5 g
C. 运算符重载可以改变运算符的结合性. _0 M+ y$ f; l( Z( E. p% c
D. 运算符重载可以使运算符实现特殊功能
& B- s' I. N1 e ]/ s* }! R 满分:2 分 / |# S p7 x# [' `- L6 h7 D
4 h% Y7 u( h! D5 d. }$ s( l* s
二、判断题(共 15 道试题,共 30 分。)V 1. C++语言类定义中默认的访问权限是public。
6 F# t& m& |8 d6 r0 _A. 错误7 l8 G% ?6 r8 K4 _1 h, G
B. 正确
: _0 w3 s, V' t1 l- t 满分:2 分
; c& {/ {% Y: B- M, l: _" l3 s3 h: d2. 当某个对象调用类的成员函数时,该对象的地址自动传递给this指针。
+ Z0 @) C$ O2 ~. n& j/ H1 FA. 错误% F. y1 t2 b) @) [" T
B. 正确
4 W0 B/ Q1 a+ H7 c! F 满分:2 分
) k! \( K* ~' ^; p3. 抽象类不能定义对象,但可以声明抽象类的指针或引用。# ~6 R# |/ o" ~4 l3 h9 a
A. 错误& a& M" d' L- Z, \! R
B. 正确/ r# Q( A( P- J
满分:2 分
. u7 ]' \9 }! T4 ?7 m' w4. 假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为: AB operator+(AB &,AB &);
; g4 A* |# W5 @% GA. 错误
+ R6 ]+ L7 F; b- r, nB. 正确
: W( j+ Q. w3 p& n! ~ 满分:2 分
4 n7 p4 o7 Y7 [+ ]# G5. 在C++中,允许从一个类派生出任意多个类,但不允许某个类同时从多个类派生。( u: A l5 v/ S9 o' a5 `
A. 错误) }2 C5 w; n; k1 Y( W( d
B. 正确) P. i- {! z; ?3 t r% h+ `
满分:2 分
9 u8 n; D, n- M, `6. 一个类的静态数据成员被该类的所有对象共享。
2 X: V+ t: z; y2 S/ ^7 H' l6 v: UA. 错误; H U9 p! ~& G! |
B. 正确
' m. I* S1 S: Y* _9 G v e" \ 满分:2 分
, R" U' p) Q/ _% W, Q# p7. 任何类都要有不必提供参数的构造函数(默认缺省构造函数)。7 j7 c/ c* p. w
A. 错误# C/ w0 g+ n6 |" S, ^2 \
B. 正确5 F! O4 y0 l4 b6 H! i
满分:2 分# L% V1 o4 d. M, A! w
8. 在C++中,可以声明虚构造函数和虚析构函数。0 w7 t' v m) J" z' `7 D
A. 错误2 y, b/ L2 J& v' g; t/ O
B. 正确* u7 ]3 n/ c4 Y1 X
满分:2 分- U* y; t( z, i% L
9. 构造函数不能被派生类继承。( e9 K# e. t" x- S4 k( h
A. 错误
4 a8 D2 M L, `8 U6 d8 w+ zB. 正确
_; m# z" i$ X* x8 b! q# D( |8 ? 满分:2 分( q( \1 K: Q7 C f
10. 基类类型的指针可以指向其派生类对象。6 ]- @) U$ d% f F* E, ^$ U
A. 错误
( D" o; a% _1 x# i, b/ h" `+ tB. 正确
& ^" j1 k: @" c- l 满分:2 分
& a& x- X, a+ Y& A' ]11. 在C++程序中,主函数的函数名必须是main。; X, ~/ k8 y# Z/ |9 k1 P
A. 错误. Z& C- u- Q* S# v, M4 \9 R/ e. Q3 E
B. 正确
: Q3 r7 |+ A3 W; B 满分:2 分+ x7 I/ e. n# ] A7 H* p
12. 派生类至少有一个基类。
" d# N3 W. F; I s2 HA. 错误
* A; [# u9 {( p+ }$ }( h. }B. 正确
% @3 m( s. O. f/ F 满分:2 分( X* K8 ^4 H+ x" Q+ O& ]
13. 在一个类中声明了某个静态数据成员,并在类外给出其定义和初始化后,若未定义该类的对象,该静态数据成员则不存在。# E% U, d0 l3 s- a. _2 H3 l9 z
A. 错误
- \4 k& \5 F0 o( L: E& h5 }0 fB. 正确: V9 I7 p5 i4 v3 p7 g' W
满分:2 分
& Q5 d+ l9 V/ i14. 私有继承中,对于基类中的所有成员,派生类的成员函数都不可直接访问。2 s; r1 \( r& D: ^8 y$ f
A. 错误0 M' @1 j2 Q/ C9 e
B. 正确
8 B* o- c' l( {9 o) N3 V! s 满分:2 分
3 F# F4 _# L# ~4 g: b- a9 ?$ u15. 对虚函数的调用,系统都是采用动态联编。
9 o& p. l! T8 K4 v& }& VA. 错误
+ g: R; m* O8 N! b) `. @B. 正确
9 n: e% w; _, [% }4 E4 S 满分:2 分 * |3 Q/ P" e; m( Y
1 @, n3 x. P4 q& k久爱奥鹏网:www.92open.com |
|