|
久爱奥鹏网 www.92open.com 主要提供奥鹏作业资料,奥鹏在线作业资料,奥鹏离线作业资料以及奥鹏毕业论文,致力打造中国最专业远程教育辅导社区。6 g& b& ]1 R! T. m# W# E
4 @9 K" x+ ]& g& d ~2 p5 ~" a$ f) Y1 T/ c; S
南开大学" \& e; ?; k0 u
11秋学期《面向对象程序设计》在线作业' @# q6 O/ ~" S
单选题& [+ ^/ A! ~5 p9 y' c1 q: _
1.下列关于动态联编的描述中,错误的是()。; d) r; ?5 m3 Y1 J
A. 动态联编是以虚函数为基础的/ R8 y' W- o) |* T! V
B. 动态联编是在运行时确定所调用的函数代码的
+ e8 g$ v; {/ x/ q; q: I$ A, ZC. 动态联编调用函数操作是通过指向对象的指针或对象. d% W' w0 H. j( A( {: \( u8 z
D. 动态联编是在编译时确定操作函数的* C' @" f$ E6 K' N6 s
资料:D
* p' G/ l- u0 B! d; z2.将一个string类对象赋予新值,应该使用string类的()函数。2 P. H& ]* o k- ~2 @) C7 T
A. assign& R- r( X, r2 |
B. insert
. s$ b, u0 G2 O4 F4 pC. swap5 T/ w! x2 W) s
D. find
3 M8 ~; i$ L( t1 u& d$ z资料:A8 \4 n7 i7 U+ q1 y3 c
3.在保护继承中,基类中的私有成员作为派生类的()。& j2 l3 W! c; [2 r2 N
A. 公有成员: z* X' u' G' J2 m
B. 私有成员
# I' q% b- G5 Q4 CC. 保护成员# j- p( ~: n. U4 \& D
D. 不可访问( B) n; h. y) g2 ]
资料:D! u m; @. G" X' m7 [
4.已知“int a=10,*p;int *&r=p; r=&a;*r=20;cout<<a;”,则输出为()。
# y9 P, u* Q+ ]' T- s; B( OA. 10
# ?) p# c F2 PB. 20: S* S' j+ E) f/ s" B
C. 不确定值- k4 f q& E2 u! B
D. 程序有错误
' [- Z$ |5 w7 _% ?! ?* T资料:B* B& ~& I2 H+ G% O, v
5.类MyClass的定义如下: class MyClass { public: MyClass() { value = 0;} SetVariable(int i) { value = i; } private: int value; } 则对下列语句序列正确的描述是()。 MyClass *p,my; p=&my;
4 {9 |1 k1 O1 G6 e- a! YA. 语句p=&my;是把对象my赋值给指针变量p1 W' z' w; b. _2 _) c+ L
B. 语句MyClass *p,my;会调用两次类MyClass的构造函数
; y" K: A7 I; S% S: Y p4 j% H; ?C. 对语句 *p.SetVariable(5)的调用是正确的& I% B% L- @, O. l! i t
D. 语句p->SetVariable(5)与语句my.SetVariable(5)等价2 V! y9 X1 X9 x2 y0 z, j9 _6 a( B
资料:D; ]- F2 k( c) _7 B# ]8 H/ z7 h
6.关于纯虚函数和抽象类的描述中,错误的是()。; H! [% K( S+ e; H% @
A. 纯虚函数是一种特殊的虚函数,它没有具体的实现。
0 Y- b3 d7 r) g' q, E6 l8 Y/ BB. 抽象类是指具有纯虚函数的类。
8 |, h6 F9 g5 U( A; O3 {( x" g6 g& ?C. 一个基类中有纯虚函数,该类的派生类一定不再是抽象类。
( [, d8 n' f `5 M3 eD. 抽象类作为基类来使用,其纯虚函数的实现由派生类给出。
4 _4 O' S& Q y' L" E& u3 p* X& J资料:C
+ A& h2 S6 w% c7 C7.运算符重载的目的是()。( K; m& q' K& \( p7 e
A. 提高程序的效率
6 D& ]1 E; V5 F: oB. 提高代码复用能力
) A$ P$ T0 y$ r/ }5 RC. 简化程序,减少目标代码
2 ~/ S2 o; Y7 W+ HD. 使程序代码直观易读" L+ T2 v- w7 L- B9 l8 ~( _
资料:D3 _( J5 O$ V# w. ?% S6 M* Z
8.下列关于赋值运算符“=”说法错误的是()。; l C- i. [- T; t, K/ I5 @
A. 返回值应声明为指针,而函数体总是用语句“return *this;”返回
6 f) l& ~ X# v2 i. N& hB. 如果参数被声明为指针或引用,通常应加上const修饰2 M& \! R2 t* |5 C5 ~" h
C. 如果参数被声明为指针,应判别是否空
2 S4 D% v/ [$ F4 ~' k% B, e) ^D. 如果被赋值对象占用了动态空间或其他资源,应首先释放这些资源
# B2 b' p6 l! U& N8 r资料:A" | Z" |1 P, O1 h1 T9 o" k
9.已知函数原型:void f(int a, int b=3,char c="*"); 则下面的函数调用中,不合法的调用是()。
1 W9 {5 ^" B2 r+ D" |2 F @A. f(5)
# H! n$ ]5 v+ M' A" yB. f(5,8)* s/ o/ {+ u; y( P$ I9 @
C. f(6, , "#")
1 [ D) L# ]- D0 P4 E/ n) M6 S3 TD. f(0,0, "#")# | t6 i, o# `# ]. F% J
资料:C( i* A, d% z$ O1 x! r
10.无论是虚函数还是实函数,在派生类中被重定义后,原来的函数版本会()。- j6 {8 ]* e5 K# p- {/ C4 F
A. 自动删除2 I# a+ k5 _3 s1 E( m2 @2 m
B. 被新函数覆盖
w7 T- u7 C' ZC. 被隐藏
) `" s. X3 P3 z/ T. _; I* ]D. 无法操作 R$ ]6 J- w0 u" @
资料:B- g! g& p' f/ ?6 l8 i
11.有关重载函数的描述正确的是()。4 R9 f) Y O( Q H6 ]$ c
A. 函数名相同的函数就是重载函数
' X7 N- Z1 F, m6 [2 h) ~3 M3 \B. 函数名相同但返回值类型不同的函数就是重载函数
/ A K5 f1 S, F9 G6 TC. 函数名相同但参数个数或类型不同的函数就是重载函数
( `$ P* B* w h& |: V# kD. 函数功能相同的函数就是重载函数4 ~+ D `) R r2 ?
资料:$ E6 ]: S) ~. U- \/ |+ m
12.在类的定义中,用于为对象分配内存空间,对类的数据成员进行初始化并执行其他内部管理操作的函数是()。" p) K: |" q1 W' p4 M
A. 友元函数2 ^: @! E3 m! Z( d( g$ [
B. 虚函数
; k E" C6 I, o) mC. 构造函数
4 Y2 Z8 H# A1 n- {* W: AD. 析构函数
) [$ K- h0 e& ^* I: G# U- G4 e资料:6 s$ ]# P f# }1 l
13.任意一个类,析构函数的个数最多是()。' _* C! {" z! n
A. 不限个数) n9 |$ d) W' {, ~; b/ B" r, f; ?
B. 1
5 @* g# A5 \8 a. T" y" M1 ~( m% gC. 2& `! y9 {$ b1 v! P
D. 33 J! W0 ^; p- J* J4 d( y
资料:( u+ p' M3 G( Q3 r1 b6 w
14.下列关于析构函数的说法错误的是()。5 c4 G- T) l7 e: w/ f, c
A. 析构函数有且仅有一个& L; v+ q @) [8 I3 l( q1 e* a6 K
B. 析构函数无任何函数类型
# Y$ O1 F3 e4 S) O9 K+ g- rC. 析构函数和构造函数一样可以有参数4 o" W" w9 r ]$ z9 m
D. 析构函数的作用之一是在对象被撤销时收回先前分配的内存空间1 X! K& p, f3 Q; i/ I
资料:0 i3 H% Y/ J X3 s, m; r9 {
15.假定MyClass为一类,执行MyClass a,b(2),*p[2];语句时会自动调用该类构造函数()次。) {* z' ?- P6 h! P
A. 2
4 G' c& r( e) d) V3 o) RB. 31 C3 C' \/ _. o" O
C. 4; f1 D$ k( M- L1 p* B* h7 I
D. 5% q* u) ~1 Q! N2 I, B/ ~ J
资料:0 a0 V4 U" v7 I" j
16.假设堆内存分配均成功,则下面程序段完全正确的是()。( J! e, A' r. i
A. int *p=new int(3);cout<<*p;delete p;, Q) Q' |4 Z( q5 }6 C; J5 l
B. int *p=new int[5]={1,2,3,4,5};for(int i=0;i<5;i++)cout<<p;delete []p;" h3 I( o* N6 w) }# i! s/ X) J/ `8 N
C. int *p=new int[5];for(int i=0;i<5;i++,p++) {*p=i; cout<<*p;}delete []p;& N' k9 [7 ? `: J
D. 以上程序段均正确 p/ j5 o# m$ N0 @8 T
资料:
4 O: D8 s! i5 d17.通常的拷贝构造函数的参数是()。% u2 r$ L, w7 |. N" e/ _
A. 某个对象名$ G5 s9 K5 {, h
B. 某个对象的成员名
# E' U" A$ }+ l7 DC. 某个对象的引用名
7 Q% g; G- H7 J) vD. 某个对象的指针名
& s; `& s9 j' ^3 o资料:
" ]$ o# U' t' g t18.下列对派生类的描述中错误的是()。- D2 e8 R4 Z( Z% }; V: ^
A. 派生类至少有一个基类
4 P2 h/ o' Y; P, |( XB. 派生类可作为另一个派生类的基类
1 J: ?8 f' |# Q* }C. 派生类除了包含它直接定义的成员外,还包含其基类的成员
+ M( ~' z7 w7 q% AD. 派生类对其继承的基类的成员访问权限保持不变) E% q8 `1 R" B4 ~+ z7 m
资料:8 H% |& k$ ^ H/ @5 n
19.程序在调用重载函数时,根据()区分到底要调用哪个函数。
: W, x% g8 ?) Z1 mA. 函数名
. o9 Q* G- l: _1 m+ j" q3 b6 S3 H6 yB. 返回值类型8 p0 G0 ^+ \* t+ i
C. 参数个数和类型
. U7 J; B* c# j; LD. 以上都可以+ U1 V6 m4 H; u3 u. ^- Y; N
资料:
% R- R- p$ y6 Q20.变量的引用,其含义是指该变量的()。
) K2 C+ s, W ] KA. 值
* [3 w4 \9 _1 ZB. 类型' h! K+ }0 A( G/ C
C. 别名
7 ~' f- H, B9 S0 a5 t* @$ s+ ]5 W% AD. 地址
( I, B% `5 r1 A! x8 F+ A3 C资料:
" l3 m! G1 X9 B( ?& X& f21.友元的作用是()。
4 ]2 M9 w7 h1 nA. 提高程序的运行效率
8 j$ J, g. `' Z2 {$ UB. 加强类的封装性2 c0 m* k' H0 C1 c
C. 实现数据的隐藏 \" p3 I# S" e" T4 J, r! w
D. 增减成员函数的种类
, X8 l$ g7 P. N1 r. s7 h, k/ i资料:) ?" }% w( b3 E5 A g, l5 x
22.在C++中,通过()的机制可以扩充和完善旧的程序设计以适应新的需要。
' Y: }. Y7 @% r, h3 c3 `: OA. 继承0 f" u4 x) Z( a
B. 封装
6 I- [5 ]1 S; i4 AC. 多态/ h/ `1 V" D4 x- a0 S. C: R
D. 重载0 m. ~2 p: A1 P4 |% s$ n& i; B
资料:- O3 d! d7 q' r. H
23.下面关于私有继承方式的论述中错误的是()。
[/ d3 p" {' Z+ P1 ]& AA. 基类中的私有成员对其对象不可见
: h$ l( }* J, x8 r7 t/ X. r. v, ?6 eB. 基类中的私有成员对其派生类不可见$ o5 T, Y* K# ?7 p: T+ g
C. 基类中的公有成员对其派生类可见
6 ]) e; r7 r9 }% u5 C1 Z* m! \D. 基类中的保护成员对其派生类不可见
7 _7 h! T9 r6 ? H: i$ u资料:
/ G+ L( G2 t* F24.交换两个string类对象所表示的字符串的内容,应该使用string类的()函数。 e5 M% U) \3 Y$ [$ y* N
A. assign+ W; i! \$ G5 k x6 }) U! W$ j8 M
B. insert
0 T8 m# |. y H l" s; O* ]C. swap
5 l! v, Y- h7 b5 N" d/ X. UD. find2 Y9 }) H+ y# x# x$ H" `( l& a$ Y6 G
资料:
- j+ k& S4 b6 ^9 m25.以下为重载函数的一组函数声明的是()。, {0 w. E0 x) F- @8 T' ^
A. void print(int); void print(double);
! [' i: P, J2 [: q1 P7 H8 ?9 gB. void fun(int); int fun(int);3 _( C2 j7 G" m& Y
C. int max(int,int); int min(int,int);! `& n/ {, q Q
D. void mm(); int mm();
4 g$ ^: w8 Q/ A4 r; }3 R- |资料:
2 N9 t# ~' J. U4 X' ~* `8 a26.下列虚基类的声明中,正确的是()。# t( d) }. t V: G
A. class virtual B:public A0 o8 y6 ]! U! |6 s6 x- Y; k
B. virtual class B:public A
6 x6 I* X" t' S7 z5 TC. class B: public A virtual
9 m8 x- w& J4 J' Y* W+ L4 q& ID. class B: virtual public A) \8 _' |5 y, i- A' U8 y! n0 N
资料:$ N$ F; f2 P9 ?1 B! b4 j! X
27.下列关于运算符重载正确的是()。
- P/ R0 ]" I; W% R* g7 L2 E- c ~A. 运算符重载可以改变运算符的操作数个数/ a1 f# v) E* ^' a# n/ f" s
B. 运算符重载可以改变运算符的优先级9 T4 Z9 N3 S! A7 E @# x9 M
C. 运算符重载可以改变运算符的结合性" E1 S) |4 T1 L$ ^. g
D. 运算符重载不可以改变语法结构
, P X t' p) S k资料:
8 j7 d( B1 c0 g3 ~* Q7 @! B28.已知“int a=10;int &r=a; r=r+20;cout<<a;”,则输出为()。
0 x, \3 y8 A. O s/ c- |5 DA. 10
" q/ M: U6 B6 D3 T& i3 W% @# hB. 20. U( \6 U9 e9 k/ s
C. 30
4 _6 }, M$ d" b) z3 W' e* o9 ~D. 不确定值
4 g3 c$ @. A4 K. k' j, f. R资料:# b/ v: D8 U+ y# g7 }! `% v
29.在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的是()。
. L* @, J, c- E' f LA. 派生类的对象可以直接访问基类的所有成员
2 `4 D+ h$ V: x/ N1 y* pB. 派生类的对象可以初始化基类的引用
. F9 ^; h( g9 }, |/ Q1 ZC. 派生类的对象不可以直接访问基类中的私有成员
3 }! L. {9 O" w8 `D. 派生类的对象的地址可以赋给指向基类的指针& U; o% n* D$ _
资料:
4 Y# k9 x. F2 t2 Z% ^- u30.在派生类中重新定义虚函数时,除了(),其他方面都应与基类中相应的虚函数保持一致。4 D) [5 E7 N! ~& `, _* B
A. 函数名
- s- |5 B, `; r) u* Q5 l) GB. 参数
+ U! W6 r2 g$ I. w3 @8 OC. 函数体, |8 k, x( Y+ S: l: Q
D. 返回值类型( ^5 `! m! a4 q9 Z1 z
资料:- _3 Y. V! t6 N8 l) L* h
31.利用成员函数对二元运算符重载,其右操作数为()。
9 }- B' J! e0 [3 MA. this指针
3 n7 R4 E% T/ k$ {! o' IB. 成员函数参数
- `) L* b$ [- [" D" nC. 非静态成员函数操作数! \. D3 d( D/ L9 x
D. 实参2 K# t Z& W' L7 ?
资料:; N# d* a2 B. o. u
32.运行以下程序时,如果由键盘输入65 14,则输出结果是()。 #include <iostream> using namespace std; int main() { int m, n; cout<<"Input m, n:"; cin>>m>>n; while(m!=n) { while(m>n) m-=n; while(n>m) n-=m; } cout<<m<<endl; return 0; }+ D6 I9 n$ ~7 ~+ u
A. 3
) H$ ]2 V" Q; u% ]B. 2# S1 {8 u7 `3 z
C. 12 F+ s& Q( E7 V9 K' M
D. 0
' k/ ~, f5 I0 r! a# J资料:
+ Q9 U5 \. ]% F4 Q& x8 q33.下列运算符中,()在C++中不能重载。9 f( ^5 v7 Z& U3 a7 t% u
A. ?:1 S) r4 I; S% p8 q
B. +1 Q4 c7 j9 U+ I1 ~
C. -
) W% h* }2 M( |, fD. <=* A, }. L4 _' W+ I& _4 r
资料:
9 H% R1 v/ ~2 a: F O$ w, Y6 D34.抽象类不能定义对象,但可以声明抽象类的()。" W* T7 y% z9 A6 ^" x. ^
A. 指针或引用
8 Z( X$ D2 c7 C4 a; C, jB. 函数返回类型
$ N! c/ u2 c% f* ` R5 vC. 显式转换
/ c+ J% S8 ^! F. x. Q* ID. 以上都是
9 H2 T5 }; \0 ^9 C资料:& S3 |( C& \, \; C3 D1 }, _
35.类的默认的无参构造函数()。, L& H% q' _0 |7 b
A. 在任何情况下都存在8 A; V" `" [6 _+ Y; d& Q, _& W
B. 仅当未定义无参构造函数时存在( W, L* o4 ] E6 Z: y3 [
C. 仅当未定义有参构造函数时存在- R% s2 @% c# W2 h, @
D. 仅当未定义任何构造函数时存在
( Y/ B9 F1 o0 M- R l资料:
: \6 Q( R( h8 i9 V3 t判断题
4 A- w3 p. b! U1.在C++中,可以声明虚构造函数和虚析构函数。
. M+ q' W$ z6 @ [) g; \A. 错误
3 C: V8 _/ }/ Y- L6 sB. 正确& _% v7 f* N( F/ g& u$ }
资料:
! x0 ~; t7 Q: ] N6 v [* W2.抽象类虽然也是一种数据类型,但它不能建立对象,只能作为基类被其他类继承。5 o" ?. \$ Y, p' T- w! d
A. 错误) ~' Q: D2 ?# |' O; c$ C% F7 o7 j {
B. 正确
+ M. g3 F S) E6 n1 N. y8 ?资料:
+ W/ z- `1 g' \; W/ ]3.构造函数不能被派生类继承。4 A+ ]; J# l; o2 ~7 Z2 n. [
A. 错误
5 P/ s" G! I7 M6 k3 S, I4 V0 z4 ]) x4 [B. 正确& x/ M& \) ?& Q& C" l
资料:1 ?: |$ S y% t7 q9 d
4.对虚函数的调用,系统都是采用动态联编。
+ B0 z, E. J3 `A. 错误$ l5 D e7 a1 z1 v+ x, f \" a& N
B. 正确2 d0 \) H" R: D2 |5 X+ }8 x
资料:) W0 d: {7 v8 v* W4 P2 S; d7 K, J! w" }
5.任何类都要有不必提供参数的构造函数(默认缺省构造函数)。) t& F8 P) p7 `/ d+ R9 M+ w# b; k
A. 错误
' h- u1 K- `8 K; O2 ~B. 正确" d4 s9 }& O8 V! Z
资料:/ ~7 f8 ~. j- h
6.在一个类中声明了某个静态数据成员,并在类外给出其定义和初始化后,若未定义该类的对象,该静态数据成员则不存在。
+ ?, @) p% t% t0 WA. 错误
@( C* S% G0 pB. 正确8 t3 Z/ U, @- W" c w
资料: O+ f- M& ?1 E7 X
7.在C++中,允许从一个类派生出任意多个类,但不允许某个类同时从多个类派生。
& V7 k& f9 K$ rA. 错误. n& G, p: M7 j* |7 l' L
B. 正确" V9 Q. K1 }4 o
资料:
3 \" t+ S4 c# C1 f# Z k- s8.C++语言类定义中默认的访问权限是public。
& @4 h& A" |! XA. 错误3 _# t4 ^4 k5 T) |1 j- {
B. 正确' K+ p: ^+ J! {% A
资料:- y% ~3 n$ s1 ^5 c8 ]% V
9.类中所提供的成员函数可以直接访问该类的私有成员。' F5 t0 m5 L1 g( t, ?8 h8 J% U! ?
A. 错误
& w+ \) Z" Z3 F& ?9 @B. 正确
% [% G& g) v* S z/ \# Y8 J资料:
9 g" U, W0 V" Z+ [7 B0 ?10.私有继承中,对于基类中的所有成员,派生类的成员函数都不可直接访问。' P# `, {% l1 D; O, N! C2 r
A. 错误/ C" Q+ _9 N, j9 C
B. 正确2 m+ e" t- z* v @! q
资料:
- P+ _' t2 u N4 Z8 |0 U0 Y" y9 z11.假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为: AB operator+(AB &,AB &);
- J. a$ Z. Z0 R& B3 tA. 错误
3 F5 J: G" J6 ~/ }8 xB. 正确
+ J( J' I7 x3 }, D( p资料:
" U) A- b' E; t* s! h12.一个类的静态数据成员被该类的所有对象共享。% y5 |# P* Y: ^0 g
A. 错误
: e9 V& s5 ?9 R8 f; l- J& xB. 正确
+ G3 N1 o; s3 I/ p' H/ N* ]7 S+ G' g资料:# O. i& ^7 ]4 J% z* k% |
13.在C++程序中,主函数的函数名必须是main。
5 u7 ]/ P: m/ C6 DA. 错误
, d) |# r$ z' WB. 正确
4 N+ Y6 _' @2 C" ~5 J) r1 H资料:
4 I9 e4 D* B4 F9 b2 F14.基类类型的指针可以指向其派生类对象。
3 ]" A0 l. P2 @" d+ EA. 错误
$ F1 S7 h' S, b) D+ H% R. \3 OB. 正确
1 w, }0 `5 h( x, J" ~$ W. y! M资料:
" g4 k2 d. {% _/ X15.当某个对象调用类的成员函数时,该对象的地址自动传递给this指针。
+ Q2 V* h, {, Q( rA. 错误
% d4 n" E) i* a3 `B. 正确
& q+ J8 Z1 F6 O6 a. @5 Z资料:( \% l& [: K8 k& `0 H- E- P! p
3 n. t0 j& [; h# o0 V
2 J4 F) u2 j4 R: N久爱奥鹏网 www.92open.com 主要提供奥鹏作业资料,奥鹏在线作业资料,奥鹏离线作业资料以及奥鹏毕业论文,致力打造中国最专业远程教育辅导社区。 |
|