|
久爱奥鹏网 www.92open.com 主要提供奥鹏作业资料,奥鹏在线作业资料,奥鹏离线作业资料以及奥鹏毕业论文,致力打造中国最专业远程教育辅导社区。. b: ^9 I$ @" V% s- Y' a8 D
6 S2 M2 Q( Z( Z& d" H t- `
* s; W% \9 G1 @" R3 ]+ b南开大学9 c1 h; R3 q- `1 n
11秋学期《面向对象程序设计》在线作业) ]8 T2 P8 _( j' w6 a
单选题5 T7 h3 J$ p" s: V( _% D) N
1.下列关于动态联编的描述中,错误的是()。
5 Z k& K( Q+ d1 P, TA. 动态联编是以虚函数为基础的- H: S, y5 ~2 t3 |# Q3 y
B. 动态联编是在运行时确定所调用的函数代码的" {# D8 x' {7 E) y7 C7 O
C. 动态联编调用函数操作是通过指向对象的指针或对象0 c( K8 q% U# ]3 p0 z X4 l! x; Y& x" j
D. 动态联编是在编译时确定操作函数的
4 i# J3 o! U( y资料:D
2 v& l8 m4 ]% u+ F! j0 R8 E; l2.将一个string类对象赋予新值,应该使用string类的()函数。
: }5 N9 y x" [/ d. l' uA. assign
1 j( F- X% B+ G5 G5 l7 qB. insert1 L, I1 c, q. I1 [
C. swap
$ V1 r- _& T/ G! H+ o; I! BD. find R$ K, \1 }4 \* d: I% S; P2 X
资料:A2 ^' J0 u0 s( [2 k& s4 a( d
3.在保护继承中,基类中的私有成员作为派生类的()。
- x& U( e, c. H5 t, a4 `A. 公有成员
9 `% v, m6 T! B. r4 zB. 私有成员
. h0 o. q3 @& dC. 保护成员! Y; b$ `- L6 x& C1 {6 `3 M* S
D. 不可访问
; x3 u" y5 c4 u) K. x资料:D2 U$ v& Y7 u J( \, @6 \8 t) A0 [
4.已知“int a=10,*p;int *&r=p; r=&a;*r=20;cout<<a;”,则输出为()。, u' f$ \* N0 y& S
A. 10
$ S8 r9 R! n) U E( p7 P% rB. 204 `" q, q& S8 c7 b% F
C. 不确定值
8 c8 v0 l. w. ]- [% A+ S( w8 ~D. 程序有错误
7 [ \% @3 s* V2 A( t+ ~ r1 ~资料:B
* G5 q0 E: J+ S5 t3 c$ U5.类MyClass的定义如下: class MyClass { public: MyClass() { value = 0;} SetVariable(int i) { value = i; } private: int value; } 则对下列语句序列正确的描述是()。 MyClass *p,my; p=&my;8 D% k% k( B3 l1 D+ w
A. 语句p=&my;是把对象my赋值给指针变量p3 H& i3 T* V9 ?4 Z: B! i
B. 语句MyClass *p,my;会调用两次类MyClass的构造函数9 W" E( D' v/ q: Q, P! g8 a9 \
C. 对语句 *p.SetVariable(5)的调用是正确的- V+ V" I% V1 z" \4 H
D. 语句p->SetVariable(5)与语句my.SetVariable(5)等价! J m" D2 b+ ]% \" ~
资料:D) U0 |( M. x! ~$ i; h1 R) a
6.关于纯虚函数和抽象类的描述中,错误的是()。4 m8 I! N8 c% K9 v, i( x5 v. y
A. 纯虚函数是一种特殊的虚函数,它没有具体的实现。
( c! h% G- N9 e$ eB. 抽象类是指具有纯虚函数的类。% H3 n) B: ?2 C- r7 e8 K
C. 一个基类中有纯虚函数,该类的派生类一定不再是抽象类。( o: G7 Y: d0 N+ l* ~5 {# d
D. 抽象类作为基类来使用,其纯虚函数的实现由派生类给出。 I8 v* ~ s: y1 S
资料:C
5 ^: z) B: J& w6 x/ t7.运算符重载的目的是()。
! c$ ^) R N dA. 提高程序的效率4 ]. J& {8 x* n" [; f2 \6 {9 m
B. 提高代码复用能力
; b6 t7 M! {* y; YC. 简化程序,减少目标代码
9 t, ]; z% K& @5 LD. 使程序代码直观易读; y9 c% i; r' v. A+ ~+ J* O
资料:D. |: X# l* q0 L' ]/ p! q7 l: D& v
8.下列关于赋值运算符“=”说法错误的是()。% y9 A9 K J+ a$ v
A. 返回值应声明为指针,而函数体总是用语句“return *this;”返回, ?; [& t7 ~3 \9 t* S
B. 如果参数被声明为指针或引用,通常应加上const修饰" p: t- v# [( R% a' k2 ]
C. 如果参数被声明为指针,应判别是否空
/ h. v+ f- K9 X5 r7 ^D. 如果被赋值对象占用了动态空间或其他资源,应首先释放这些资源
' w( C4 L* y/ d; M资料:A0 N' A* T: M% m) P! e' \8 k. M
9.已知函数原型:void f(int a, int b=3,char c="*"); 则下面的函数调用中,不合法的调用是()。
4 A9 p% h4 |; \ g% L9 w( L+ mA. f(5)
2 B' U9 D) j: U7 Z, nB. f(5,8)6 v) I! l7 j2 O2 @5 ?
C. f(6, , "#")4 x& s9 O; t' {! D0 L
D. f(0,0, "#")* s: ]) a( |7 z! @/ ^
资料:C$ G" l/ ^4 [/ V9 L0 J* G
10.无论是虚函数还是实函数,在派生类中被重定义后,原来的函数版本会()。
& { X3 Z8 o' `+ M6 ^A. 自动删除
1 m) O& x' N& A0 ^% q* t3 [B. 被新函数覆盖! Y# y9 ]4 h! B" v
C. 被隐藏
( u- p c# V+ W) e% i1 ]D. 无法操作5 N, G/ ?3 ]+ H/ X" R g
资料:B5 L, V( U9 \$ a }: q: o9 y
11.有关重载函数的描述正确的是()。
1 m7 B1 _5 d7 mA. 函数名相同的函数就是重载函数
4 Q, s1 T' q* T7 n# C7 c1 \5 UB. 函数名相同但返回值类型不同的函数就是重载函数) |6 h: E4 P7 E* A# |2 B' ?% a. A0 p
C. 函数名相同但参数个数或类型不同的函数就是重载函数
5 s: u; h, g" W- _& hD. 函数功能相同的函数就是重载函数. |% X0 ]& D# `: x$ ~' r
资料:! ~& _8 U& d9 m- ~1 K5 ^
12.在类的定义中,用于为对象分配内存空间,对类的数据成员进行初始化并执行其他内部管理操作的函数是()。8 s q. c- C- r
A. 友元函数
/ b. |- \4 F( k( E' l# c7 AB. 虚函数
/ j8 T9 K( Q! z6 j/ F) E$ gC. 构造函数
7 `* [7 g* {) {3 e4 f8 E VD. 析构函数: b& j* A2 z& V- e" g# i0 I; U
资料:" p$ |* L8 L9 E* f. i) F
13.任意一个类,析构函数的个数最多是()。
, g: ~8 { }! @A. 不限个数" d! U; A8 {4 x( c
B. 14 N* Z2 q- c5 l& c9 G
C. 27 K0 t! v3 w0 ~0 o+ A
D. 35 ~) f0 t( F2 g% P
资料:
1 U3 o# ?1 }$ s1 ]14.下列关于析构函数的说法错误的是()。 D4 U$ E( Q/ a* a
A. 析构函数有且仅有一个6 H2 \+ T, D& s
B. 析构函数无任何函数类型+ I! M9 @" j' ^# P6 q3 [
C. 析构函数和构造函数一样可以有参数1 ], {# i9 ?$ \9 K# C
D. 析构函数的作用之一是在对象被撤销时收回先前分配的内存空间5 o9 N% _0 f7 v# ?" U' q B' R
资料:# x% u6 k2 W3 L( I
15.假定MyClass为一类,执行MyClass a,b(2),*p[2];语句时会自动调用该类构造函数()次。
# |) I, a) K; F1 r- `2 i/ O& xA. 2/ O2 G6 D$ y+ H
B. 3
& n3 E. Q% G5 T/ q# pC. 4& z6 W; Y" b/ [+ N- G( o
D. 5
$ M5 `( P6 G( e, ]资料:- _9 ?2 G1 y$ ^* R5 Q; }1 \
16.假设堆内存分配均成功,则下面程序段完全正确的是()。0 k6 V2 k; G( Z. u
A. int *p=new int(3);cout<<*p;delete p;& j2 Q, H2 H9 D1 i
B. int *p=new int[5]={1,2,3,4,5};for(int i=0;i<5;i++)cout<<p;delete []p;
* V+ j1 w5 @8 u3 ?- }: B5 _C. int *p=new int[5];for(int i=0;i<5;i++,p++) {*p=i; cout<<*p;}delete []p;
1 ?: ?( X# Q; ~+ c. x6 l- KD. 以上程序段均正确) H- U" d, y1 M3 b! g) p
资料:# K# f: [6 `- h6 o8 Y2 ?* z
17.通常的拷贝构造函数的参数是()。
0 x8 V' m5 E' d; C& ]- Q8 Z4 p9 v! eA. 某个对象名4 Y- h& o7 |& [* c6 `3 \/ P. X. y
B. 某个对象的成员名
* |0 B) s) j' vC. 某个对象的引用名) D. L# B3 J' L, F* U! ~1 m
D. 某个对象的指针名
- Y( b8 j2 M8 O+ C9 \( p资料:
3 O4 I9 C" g$ [) J' ]: l; \; W18.下列对派生类的描述中错误的是()。2 G: }) V* e& ]+ h# J& N
A. 派生类至少有一个基类0 ^2 J: [+ C& \6 W3 ?* |+ P/ h' b
B. 派生类可作为另一个派生类的基类
5 H2 D/ x- ]! ?" c/ l! a/ m6 z- [0 ZC. 派生类除了包含它直接定义的成员外,还包含其基类的成员
1 s* I8 T% r- L" i3 ]D. 派生类对其继承的基类的成员访问权限保持不变. c& q% [1 J+ w+ L2 b' _" ]8 V0 Z- \# e
资料:! i7 U7 E% {' v8 t, K" Y5 R
19.程序在调用重载函数时,根据()区分到底要调用哪个函数。! Q$ R" j. E, p
A. 函数名# \# c; x* U, Q3 l5 i" r
B. 返回值类型
2 N; C1 r4 R, B) m+ |' {# aC. 参数个数和类型
6 |7 L( X: H0 X+ iD. 以上都可以! V m8 m" v7 S) t# D/ K. I
资料:
% ]1 H/ I1 p I- k J20.变量的引用,其含义是指该变量的()。- E k$ W( B3 v( ?2 b% r: Z
A. 值2 T2 L6 ^: l7 P! u. C- G' f( h
B. 类型
) O* v" s2 Y; M+ O2 w2 e; ^: AC. 别名
# M. }& Z/ o G. ~/ ~8 `0 I; gD. 地址
6 `6 N8 g4 u; s; A' v1 T; L资料:9 f9 Y8 W' @9 @. D9 Z$ q2 }6 o) t
21.友元的作用是()。
# [- _+ j7 e; e" i. H5 LA. 提高程序的运行效率* J: z- O4 h) g5 ?4 i
B. 加强类的封装性# v+ M) W. X B. F% L
C. 实现数据的隐藏
, x1 L9 I3 ?/ V+ W, x1 B' ]D. 增减成员函数的种类4 J; S) L [3 Z. i
资料:$ j* o2 |* ~$ {0 C+ `* \* Y1 [
22.在C++中,通过()的机制可以扩充和完善旧的程序设计以适应新的需要。7 }% n5 ?8 ?: ?# V5 y" z
A. 继承
6 T& u1 f- I$ g5 f! JB. 封装. s2 j- |- I z( E! u
C. 多态
! V. |$ U( D& _; T: X+ E4 xD. 重载4 I H$ }/ W7 R% c
资料:( m/ b2 j& _2 n0 O* q0 f9 z
23.下面关于私有继承方式的论述中错误的是()。
5 Z- u$ b& k! J2 H( V, \, kA. 基类中的私有成员对其对象不可见$ w: y8 L! M' [
B. 基类中的私有成员对其派生类不可见* Y6 W/ g/ c, l, G, s9 _3 I
C. 基类中的公有成员对其派生类可见# \% ?& U5 C n0 J" W
D. 基类中的保护成员对其派生类不可见 X8 c" [/ j$ r z2 @8 e9 T- V8 t
资料:7 ]: B- u8 H: _" }8 @; }
24.交换两个string类对象所表示的字符串的内容,应该使用string类的()函数。
" F. v4 i& V$ @: }, A3 A. K$ kA. assign7 I% v9 N0 s) n( [1 \/ O9 n
B. insert) P) s! d2 R8 _: p
C. swap' J& p9 g6 g0 g
D. find
- c H }+ R) z) Z/ `: H' P" {6 J资料:. N8 _" d* Q* Z7 a2 w) U9 W
25.以下为重载函数的一组函数声明的是()。2 A7 D) G2 x! c! d7 g5 z9 U; S5 n
A. void print(int); void print(double);
8 O" _$ X: r( @8 u) Z$ i& N |- FB. void fun(int); int fun(int);
. R2 L$ Q' u0 ?6 n. l! NC. int max(int,int); int min(int,int);* c E9 o4 \3 g
D. void mm(); int mm();" A% s0 { x6 y1 M8 C
资料:1 Y' ?$ I- G2 y- h) D1 |
26.下列虚基类的声明中,正确的是()。
% O/ o+ Q3 k/ t1 `3 t2 y) aA. class virtual B:public A$ c' z# F3 W6 b4 D; Z: _3 [* p3 E
B. virtual class B:public A3 N, U& `3 {1 H+ X, [8 \
C. class B: public A virtual
- [. a, C8 n. j" C; mD. class B: virtual public A
$ z( B9 ~2 ~% i% ?: M资料:
: h( X9 T' o+ }8 w. \& {, g0 G, O2 q27.下列关于运算符重载正确的是()。
: Z! J6 G- D+ X0 Y D' |9 qA. 运算符重载可以改变运算符的操作数个数7 _1 ?; ]- ]8 S6 z0 T# y
B. 运算符重载可以改变运算符的优先级1 w1 T% ~' P0 V$ u! C3 u0 R- }, `
C. 运算符重载可以改变运算符的结合性6 h. q0 S& K! S2 O7 U# t' E, [# b6 o
D. 运算符重载不可以改变语法结构
$ K% x# w7 J0 @0 s8 O0 I+ r5 |资料:
. a3 E( F p% ^0 m: V* `, ^, }! G28.已知“int a=10;int &r=a; r=r+20;cout<<a;”,则输出为()。
# J7 C; k* \; m3 hA. 10- _. L+ S) E% k* w1 `) c
B. 20
' r! Y! E3 L3 l. ~& W, F* _C. 30
5 B5 e# V$ P+ c$ f7 wD. 不确定值9 W. o7 B; ` W H. L! i$ ?1 ?! T
资料:# A. K4 i7 ~) S2 Y
29.在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的是()。. C' w7 a+ S+ m* t' b; o
A. 派生类的对象可以直接访问基类的所有成员2 L/ `/ o" u0 l) k5 M5 I) s
B. 派生类的对象可以初始化基类的引用4 j; M; f3 O5 R$ O, i2 i; }) O
C. 派生类的对象不可以直接访问基类中的私有成员2 X8 G) W+ d* i( S+ `
D. 派生类的对象的地址可以赋给指向基类的指针
% U; P# W% o3 I资料:( v, G, h. k2 n
30.在派生类中重新定义虚函数时,除了(),其他方面都应与基类中相应的虚函数保持一致。
8 o' b* e; ]" x7 nA. 函数名: x7 L7 K' E) z+ O
B. 参数
% f& C4 Y/ p* n4 |C. 函数体
1 H; n$ Z# x' @: u0 gD. 返回值类型
/ X3 y% N' S# M& y2 V: q" |资料:% ]( r- a, c7 y: i
31.利用成员函数对二元运算符重载,其右操作数为()。, H( u9 V5 |5 c
A. this指针
* Y# o7 s; I) wB. 成员函数参数% l; [* m8 n2 D, R- w9 m7 n0 I# k4 ]$ k
C. 非静态成员函数操作数
' E4 L6 a: f3 r& \D. 实参
& \& T0 s8 U) a9 h$ h资料:& w$ m9 ]1 d+ Y
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; }" g, ` z3 `2 D
A. 3
( [8 O* X5 z; c0 [4 s, cB. 2
/ e8 u0 m+ h/ A! j s& z/ xC. 14 H0 V* E( V0 r$ X& H$ [
D. 0
2 i* U$ {, U# X资料:1 i/ a- z- S [/ U
33.下列运算符中,()在C++中不能重载。
6 [: S6 q2 \. b1 o( z. w: rA. ?:5 i9 z2 i1 I. h. N* c, u6 U
B. +1 c" K3 l9 c, z5 m9 s
C. -
' w1 a( A$ j+ u0 HD. <=4 }/ Y' \2 x( _' r
资料:9 L" m0 S9 M% O, S" d+ L
34.抽象类不能定义对象,但可以声明抽象类的()。
$ F1 D& d! h+ b0 A. A) p( JA. 指针或引用
. E5 o( f) J8 u: F/ u1 vB. 函数返回类型3 n" ~$ W6 z( O$ Q
C. 显式转换
- {. v$ {7 M* M4 {4 yD. 以上都是
1 ^& M; V# Q* [8 U资料:
, o% q& z( w6 h3 p35.类的默认的无参构造函数()。
2 G) I) c+ h3 m9 E( ^A. 在任何情况下都存在: e2 o7 y D" V# g& t% h; q
B. 仅当未定义无参构造函数时存在
8 m4 z7 s! f* a" |2 R) m' \C. 仅当未定义有参构造函数时存在8 C7 E. K+ j! a) S+ l
D. 仅当未定义任何构造函数时存在" f; k5 p- N. o" G$ x
资料:
( p4 J- o( [5 B8 Z; e% ?% c判断题
! _& C i$ G! [4 V5 {1.在C++中,可以声明虚构造函数和虚析构函数。
) k: P* f3 I; t4 ~A. 错误5 m) ^- u; w5 g# D+ `, j
B. 正确( I8 B4 o- `7 ^7 w
资料:: i' y( P8 _6 ^* S
2.抽象类虽然也是一种数据类型,但它不能建立对象,只能作为基类被其他类继承。
1 V6 W, I0 w: t4 S# eA. 错误
# p8 r# }: {& S* @& a8 y5 F1 cB. 正确
' N' `) g) V- A1 O; E. W! x资料:0 O g% Z5 U, i/ c# B
3.构造函数不能被派生类继承。" A/ N* w- [3 f7 V, [4 Y% q
A. 错误3 g4 b+ i5 W8 r" w; J+ {# @
B. 正确) z F" A! u7 H' j* h
资料:
4 ]; R% L3 i2 i9 I9 A" L4.对虚函数的调用,系统都是采用动态联编。+ b: ]7 b0 q& T4 M( w5 R+ a
A. 错误
( _0 O+ O; k5 _B. 正确1 K# l- Z; ]7 i4 p* J1 L; t6 s
资料:
" X5 O. E* G0 N7 C7 w1 D% g5 n5.任何类都要有不必提供参数的构造函数(默认缺省构造函数)。- z4 Z1 p' x, g% v# w0 T/ U9 z9 F$ `" h7 t
A. 错误
) \7 ]0 A, S" Y1 ~) t4 jB. 正确, Y& C8 `9 e c% R+ o# J1 R% O
资料:9 g8 s' T( {4 V( W3 x3 q/ ]
6.在一个类中声明了某个静态数据成员,并在类外给出其定义和初始化后,若未定义该类的对象,该静态数据成员则不存在。! ^: D5 i C% F& e" x
A. 错误
4 I: c# R5 |; c( {) S, p( d/ S3 yB. 正确8 I+ z+ m, Z; L
资料:
: t4 c3 E8 \% X5 Q7 }/ _4 ]7.在C++中,允许从一个类派生出任意多个类,但不允许某个类同时从多个类派生。. v2 c) ?2 O" t% n2 u
A. 错误
( L P. ]* g( L4 vB. 正确
" \) T& h" a$ \+ M7 r资料:
7 a4 U( V9 K) m- O$ O+ R' |* {8.C++语言类定义中默认的访问权限是public。
( Q! _" O6 S& O" |3 h) nA. 错误5 N% i/ |' Z% J; k* W
B. 正确! ], m( ?+ x1 [! U; Y* q
资料:
' T! L( T0 p$ j* U9 J' n; a: T7 _9.类中所提供的成员函数可以直接访问该类的私有成员。- y3 W) U2 N4 Y* ]: e; h
A. 错误6 Q; M) k b" h$ W% s
B. 正确
! Y! a$ p) j k$ F8 ^资料:
B; O9 P, N% y$ h5 n$ L& P p' @' z1 }+ Y10.私有继承中,对于基类中的所有成员,派生类的成员函数都不可直接访问。
$ N( p, g6 E# [# C2 _( v4 I1 EA. 错误
% V- x5 K0 b/ UB. 正确: C+ R+ \5 [( J5 I0 \6 f. k
资料:# C5 ]$ ]" i! _: D0 `
11.假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为: AB operator+(AB &,AB &);: Z- {3 Y+ W5 ^& {2 V. [8 j
A. 错误 ]: k7 S) Z5 F
B. 正确3 x1 l. B8 E! |2 w
资料:: k6 a; G6 X1 H4 L
12.一个类的静态数据成员被该类的所有对象共享。! N" G8 n) a2 k" Q# b' v
A. 错误6 u3 h# l3 O: o+ R, o2 H' }
B. 正确! |# r) I( F; `' `% u
资料:* Z' p6 W x5 [
13.在C++程序中,主函数的函数名必须是main。
7 N% i2 ?, Y! q- L0 l, c G/ ?3 GA. 错误2 S0 z8 f1 s+ e7 R9 y
B. 正确
0 x& t% r/ n9 c资料:! i$ M) u0 m/ }, U% _! p- Q
14.基类类型的指针可以指向其派生类对象。
; B0 w/ b7 G- u% LA. 错误2 V0 f+ |9 j: \7 }
B. 正确
" x; E6 G( _4 A% h& O' t资料:
1 X- ]$ }. g# L0 ^. ^) Z) Q15.当某个对象调用类的成员函数时,该对象的地址自动传递给this指针。3 O) F/ `% |# M/ w4 ?1 p7 s: |
A. 错误
' g/ @! n, c3 W+ e% q, E( j$ YB. 正确* ~" U2 X# |4 w' ~4 s% [+ L9 }
资料:
- }( Y5 N2 C* \) Y
( G4 C' d1 K4 K% z
' H' N! Q" ]$ Z久爱奥鹏网 www.92open.com 主要提供奥鹏作业资料,奥鹏在线作业资料,奥鹏离线作业资料以及奥鹏毕业论文,致力打造中国最专业远程教育辅导社区。 |
|