南开20春学期(2003)《面向对象程序设计》在线作业
【奥鹏】-[南开大学]20春学期(1709、1803、1809、1903、1909、2003)《面向对象程序设计》在线作业" i0 e7 O2 K9 H+ h! B2 k; T9 @; N试卷总分:100 得分:1009 eY3 {5 fy7 b
第1题,若定义cinstr;当输入 Microsoft Visual Studio 6.0! # m! T/ L3 u; K2 B9 p1 P
所得的结果是str=1 ?, j- I! }) w/ {
()。
A、Microsoft Visual Studio 6.0!
B、Microsoft
C、Microsoft Visual; p$ j1 kl% e; m1 z
D、Microsoft Visual Studio 6.0$ y, J) R/ Y/ U
正确答案:
第2题,关于纯虚函数和抽象类的描述中,错误的是()。
A、纯虚函数是一种特殊的虚函数,它没有具体的实现。4 V' S$ v- v7 k" F
B、抽象类是指具有纯虚函数的类。
C、一个基类中有纯虚函数,该类的派生类一定不再是抽象类。6 @: k" H7 r) z+ P
D、抽象类作为基类来使用,其纯虚函数的实现由派生类给出。
正确答案:
# E0 p, p|$ U* ~! _$ b
8 L7 F7 N# ]# A+ R8 V
第3题,下面程序段中,说法正确的是( ); s! p2 f; |7 C, A% b1 ^4 \
class location{ public : int GetX(); };
class rectangle:private location { public: int GetW(); };( j. {& k; Q! e6 w
A、类rectangle的私有派生类是location
B、类rectangle中的public成员在类 location中是私有的/ s- {[/ o" e- L2 H5 j
C、类location中的public成员在类rectangle中是不可访问的5 U! F, {2 ~3 ?# \) Z
D、viod f( ) {Rectangle r; int X=r .GetX( );} 其中int X = r .GetX( );是非法语句; o" lJo. @- f7 v4 x
正确答案:, \( R8 r: t* G& T* B1 K2 T
' t) H4 A* M& o% |% A0 UZ
第4题,假定MyClass为一类,执行MyClass a,b(2),*p;语句时会自动调用该类构造函数()次。
A、22 Ra5 r1 c: ~~
B、3( W! T, v" B! Q# [
C、4( Vq( c" ]; ]- {
D、59 t' m, |! Z+ Z6 M/ V2 v
正确答案:& a- `2 h" L3 k9 a' {
第5题,假定已定义浮点型变量data,以二进制方式把data的值写入输出文件流对象outfile中去,正确的语句是( )。
A、outfile.write((float *) &data, sizeof(float));8 `; Q# k/ j3 Q0 i2 j0 t. S
B、outfile.write((float *) &data, data);2 V0 M7 J" C2 T$ I5 S! q4 ~
C、outfile.write((char *) &data, sizeof(float));3 _/ P& {/ Ow# u4 @' @
D、outfile.write((char *) &data, data);
正确答案:
0 Q. @* g' M; Q, u* ]' z) E2 ]$ @
第6题,对虚函数的调用()。
A、一定使用动态联编: k- t" z% z6 k
B、一定使用静态联编
C、必须使用动态联编
D、不一定使用动态联编* o7 s1 B3 d! v% c8 {: X* J
正确答案:9 Z0 g: w$ \/ X* G! S( A
0 j# F* F. C2 i0 l
% s( K) c5 A1 Lw, {- s+ `& L5 a7 [
第7题,下列虚基类的声明中正确的是( )。
A、class virtual B:public A0 U6 t5 O4 C* p) J4 A% p
B、virtual class B:public% ]4 e2 f6 V) N. P( t; e
C、class B:public A virtual
D、class B: virtual public A3 E+ L. O$ n& U" q2 L0 X1 V
正确答案:9 z8 F& k8 M+ p4 `8 te- m( v
8 \3 F! V0 s/ T
$ ?' E5 N) q; H
第8题,派生类的对象对它的基类成员中()是可以访问的。7 V0 H; m) T2 ~! P/ k/ g
A、公有继承的公有成员8 S2 \! T2 r1 Z* Z* J
B、公有继承的私有成员, B# h6 l: S$ j% j# m! z0 ]7 E4 q% r
C、公有继承的保护成员# n1 Y& N& p5 D, v- o$ F( G& M
D、私有继承的公有成员
正确答案:, 8 k# k
: Xw4 l) b7 M: p2 P+ ]
第9题,设置虚基类的目的是()。
A、简化程序8 x& [9 k) C4 W+ F4 v; m/ r
B、消除二义性
C、提高运行效率
D、减少目标代码
正确答案:
. r6 Z; k& X" \# [) ]. {$ J# Y7 `
第10题,如果一个类至少有一个纯虚函数,那么就称该类是()。
A、抽象类. d# X* L! |4 X6 F$ D; \
B、虚基类
C、派生类1 hY" Y8 c! TU7 J7 k! |. H9 K, E
D、以上都不对9 ]5 H: Y0 ^7 |V0 X0 I1 }
正确答案:
e?/ A: u9 _; \8 o
第11题,下列函数中,可以作为虚函数的是( )。4 V/ z( b$ Z6 i6 I# N$ R4 t; {
A、普通函数# HF. ?0 o$ x0 B: `/ h* H# X6 @
B、构造函数3 ^: z) x9 Ln" K# T" |
C、静态成员函数9 UO2 C1 X5 C; ^: n7 w
D、析构函数
正确答案:" h/ w. a; `! R9 o! ^
9 x/ k7 A! F1 s$ O( x9 G1 a?
第12题,已知“int a=10,*p;int *&r=p; r=&a;*p=20;couta;”,则输出为()。8 N' [7 ~/ n9 B" [( `( g. i% S
A、10% Q0 E" ~+ e% m. |
B、208 |4 c3 \1 S( ]; g! H
C、不确定值$ P9 A! G# NF2 W" G
D、程序有错误
正确答案:& z' U+ N; w! t% y' y2 I8 F$ u/ T" _. D
3 D. k7 l6 Z& Q5 k' |
第13题,在派生类中重新定义虚函数时,除了(),其他方面都应与基类中相应的虚函数保持一致。$ }/ z2 Z- e, C4 O}; G
A、函数名
B、参数% j" J. {9 Z, k: M: B( O
C、函数体; L- d$ `3 E* o$ m( `
D、返回值类型- c% y) @! T) w4 F( d* F: _
正确答案:
第14题,对于公有派生,它的“继承方式“是()。
A、private
B、public
C、protected: p+ _" O6 Q0 D
D、inaccessible/ L# V2 P* V1 ]4 p
正确答案:* os# T^& z& U( a( r& j
第15题,有关类和对象的说法不正确的是( )。
A、对象是类的一个实例$ s6 ~2 Y1 c9 QM
B、一个类只能有一个对象
C、任何一个对象只能属于一个具体的类" D1 I. V( e& v- S$ ^
D、类与对象的关系和数据类型和变量的关系相似- j6 `( n: m% F9 ~
正确答案:
! J, ?+ F- B/ W' `7 L0 i
( R( g- U+ ^0 A5 `- a
第16题,类MyClass的定义如下:
class MyClass
{
public:MyClass() { value = 0;}SetVariable(int i) { value = i; }& A; ]. H3 N- G3 x0 ]1 c
private:int value;* W3 u' C$ }+ S; T( z0 p
}3 r. p, v4 m! Z4 D3 s% I
则对下列语句序列正确的描述是()。MyClass *p,my;p=&my;
A、语句p=&my;是把对象my赋值给指针变量p
B、语句MyClass *p,my;会调用两次类MyClass的构造函数
C、对语句 *p.SetVariable(5)的调用是正确的$ @( \; P7 }' c9 X9 i" y. l
D、语句p-SetVariable(5)与语句my.SetVariable(5)等价
正确答案:
0 i& J" k# [& v- L) F
第17题,下列静态数据成员的特性中,( )是错误的。
A、说明静态数据成员时前边要加关键字static来修饰/ q- ~6 y) m! F. K. d9 P4 s& d
B、静态数据成员在类体外进行初始化
C、引用静态数据成员时,要在静态数据成员名前加和作用域运算符" i; {+ {( F, f4 ]
D、静态数据成员不是所有对象所共有的
正确答案:
$ T; V1 {! a( B6 ]' I0 L
第18题,下列关于构造函数调用顺序的描述中,正确的是()。$ |6 |# G& B7 g0 P( q5 K4 @
A、创建派生类对象时,先调用基类的构造函数,后调用派生类的构造函数6 {" u0 M/ U8 H$ i% Z1 j( i
B、创建基类对象时,先调用基类的构造函数,后调用派生类的构造函数2 K5 \! G; f2 d; j
C、创建派生类对象时,先调用派生类的构造函数,后调用基类的构造函数
D、创建基类对象时,先调用派生类的构造函数,后调用基类的构造函数
正确答案:
0 t9 S* j, [1 d( U# Y! o
# A[& R& s9 H& K: U! v
第19题,下列( )不是构造函数的特征。) {- C+ x) d$ s4 F, A! f
A、构造函数的函数名与类名相同1 F( C, ~5 d" q' J- M" |& l
B、构造函数可以重载o) k! p# c8 m/ R, P+ N3 T
C、构造函数可以设置默认参数4 E" g4 p6 O$ Y, a/ S. c4 B2 h, l
D、构造函数必须指定类型说明6 f, v( k( S' X9 |. e4 o* i- {
正确答案:
9 ?6 L`7 SD$ Y
( l' I# t8 ~: r4 [
第20题,变量的引用,其含义是指该变量的()。" [2 S7 M% k4 q' X% @9 n0 A( ?
A、值5 `' Y" U- m9 a" B/ n, Y
B、类型
C、别名
D、地址9 i" B9 r% s/ M2 o. R) p; e
正确答案:
第21题,空类的声明( )是正确的。
A、class类名;
B、class类名{};
C、class类名{}$ Z1 ]% q4 E8 l! p1 W
D、class类名! i! C; z' |, Y' r' q. l- F
正确答案:' {% G- L3 U/ v4 Y+ V
' U7 W' {) p, K
第22题,下面关于对象概念的描述中,( )是错误的。
A、对象就是C语言中的结构变量, T- y3 q: O0 {: v$ c7 q6 l) D% f
B、对象代表着正在创建的系统中的一个实体
C、对象是一个状态和操作(或方法)的封装体
D、对象之间的信息传递是通过消息进行的5 L% V1 a9 S* C+ }: R& k' p6 p6 T
正确答案:
第23题,友元关系不能( )。$ E+ P' \4 d0 i0 \- \, W# [
A、继承& g/ x7 nx/ i" X) q2 `/ l
B、是类与类之间是关系
C、是一个类的成员函数与另一个类的关系^7 @5 N( v1 u* R. d# W
D、提高程序的运行效率
正确答案:0 Q/ Z9 ~" b. w" w
第24题,虚函数必须是类的()。
A、友元函数
B、成员函数8 O, ^% D' ^@' k5 A2 v% N
C、构造函数' b. x* Q) N% t; j# Z6 I2 |
D、析构函数
正确答案:
, T3 I6 K6 G* _. {- V8 Bt
; _6 T" l4 ?, a; X% }, G
第25题,下面对友元的错误描述是( )。- q8 }" w! t& h2 g
A、关键字friend用于声明友元, ]6 N/ R1 }# m0 F# @
B、一个类的成员函数可以是另一个类的友元
C、友元函数访问对象的成员不受访问特性影响
D、友元函数通过this指针访问对象成员* L) C! R2 K" d
正确答案:& T/ X" P. G- x, H
第26题,类模板的模板参数( )。1 ~9 `+ q2 {5 i7 q
A、只可作为数据成员的类型
B、只可作为成员函数的返回类型
C、只可作为成员函数的参数类型" C$ b; h8 B" t9 B
D、以上三者皆可) @2 s; a8 H* |" z* {8 G
正确答案:9 [% I& a3 e8 j& J0 g# T9 k
第27题,关于this指针的说法错误的是( )。( X|$ S* ?7 J7 m7 h4 Y
A、this指针必须显示说明. q0 }3 D; G& E
B、当创建一个对象后,this指针就指向该对象5 ]) k$ R) A: Z8 P% h
C、成员函数拥有this指针$ `4 r3 C; }1 j4 l
D、静态成员函数不拥有this指针
正确答案:. `2 [2 k2 w9 b' u
, {9 ^- M3 Z* aT" d
第28题,已知“float *p; p=new float;”,若要释放p所指向的堆中的这些字节,下列语句正确的是()。; |% u1 ^. z# W: w2 \
A、delete p;
B、delete p[];1 T, u2 m/ M$ @: r7 [
C、delete []p;3 c% CR- i% p; V( K& K# y8 s+ U7 G
D、delete p;% {/ W" @; ?; @, D+ I+ ^
正确答案:, i3 G) d6 _- d( d. F8 G5 n
' \2 S3 ^' z1 U+ \: I
第29题,以成员函数方式重载运算符“”,则obj1obj2被C++编译器解释为()。
A、operator(obj1,obj2)
B、(obj1,obj2)
C、obj1.operator(obj2)( p3 q& K: w) @9 ^- c. o
D、obj2.operator(obj1)* u6 e# B1 X% o?
正确答案:
J$ J7 `7 Z5 R$ W$ g
第30题,下面叙述错误的是( )。2 y# \3 ?4 [8 e
A、派生类可以使用private派生
B、对基类成员的访问必须是无二义性的
C、基类成员的访问能力在派生类中维持不变% A/ t' c, K$ s6 C[. c' mK
D、赋值兼容规则也适用于多继承的组合, x' E- `& |& U) h5 ~
正确答案:* I; Y) B+ H7 E# m4 l- n. F
; U2 nX; p4 L5 ]
第31题,有关重载函数的描述正确的是()。
A、函数名相同的函数就是重载函数
B、函数名相同但返回值类型不同的函数就是重载函数
C、函数名相同但参数个数或类型不同的函数就是重载函数
D、函数功能相同的函数就是重载函数7 ?' m7 e9 Q4 }# s. m- E/ j0 m2 `$ p
正确答案:
8 m* c9 o3 N- A* _( F
9 T3 f/ K- Q" \
第32题,若类中有指针成员变量,则应编写(),使得在对象销毁时能够自动调用该函数释放指针成员变量所指向的内存空间。5 f- M8 R% v. {9 }" A
A、友元函数4 U) ^/ R+ y5 i
B、虚函数* a% X8 ]! M3 E0 Y% U; Z" }
C、构造函数
D、析构函数- O; B( C! W( [~4 J2 [; v- H
正确答案:0 ^2 {: \* U( G. S1 f% ^" Q
第33题,下面关于私有继承方式的论述中错误的是()。
A、基类中的私有成员对其对象不可见. ~. z' d2 `* I' ~% G! I; F: g
B、基类中的私有成员对其派生类不可见2 I# o9 [: w# ]
C、基类中的公有成员对其派生类可见
D、基类中的保护成员对其派生类不可见
正确答案:
! t& n# q2 N4 Z
第34题,若析构函数是虚函数,则delete对析构函数的调用采用( )。9 T) x' u3 T- c+ |
A、静态联编
B、动态联编
C、重载函数
D、多重函数
正确答案:+ N4 W5 Q9 w$ M
$ }! M+ d/ e9 W: W9 h% \
第35题,下列关于运算符重载正确的是()。$ O3 W! I9 v$ ]}4 l( H% V
A、运算符重载可以改变运算符的操作数个数7 M8 }1 o; x, c1 a# U) W0 s
B、运算符重载可以改变运算符的优先级
C、运算符重载可以改变运算符的结合性
D、运算符重载不可以改变语法结构
正确答案:
: ~% D3 M% L5 ?* C0 G. x
第36题,一个函数模板只生成一个模板函数。/ U+ f) Q0 {* ]8 c! @" y
T、对' E& A; n2 E; X* c9 D; Y
F、错3 K# N& p7 v, p) e, J
正确答案:
; v0 ~+ u0 k; ]* P2 v* s
6 L, l) U/ P. w& ^
第37题,引用是某个变量的别名。对引用的操作,实质上就是对被引用的变量的操作。
T、对
F、错# {7 e9 K+ r( \: S( H3 c* N3 Y& ^
正确答案:
: `9 A) g# D/ \; h0 g, |( O
第38题,在一个类中声明了某个静态数据成员,并在类外给出其定义和初始化后,若未定义该类的对象,该静态数据成员则不存在。, p, F, u* `% r' lj3 `6 A
A、错误d, w6 c: p" H" \
B、正确
正确答案:
第39题,使用关键字class定义的类中默认的访问权限是私有(private)的。
T、对" v; a' H+ S" x* l
F、错
正确答案:
/ J' z0 re) C2 Q2 V- K
+ l9 d9 g) |# c" Y. @, h7 E
第40题,在派生类构造函数的成员初始化列表中,可以包含基类构造函数的调用。
A、错误
B、正确
正确答案:
' r" t, G( n* l9 e: q
第41题,C++语言类定义中默认的访问权限是public。
A、错误1 j- Q6 ^9 r; ?4 V/ D' ?! A3 T
B、正确4 z# H, d8 j8 L1 r# A9 j8 c; C7 r9 s
正确答案:
/ A) V- H& ?/ Y) O) \+ K* ~
第42题,类的成员函数中可以直接访问对象成员中的私有成员。, t$ b/ c7 [+ B/ A0 X6 M! G) R4 s
T、对
F、错
正确答案:* `* P. @3 b; E9 Z- j2 O0 Q
1 g; V5 Y2 E3 y0 |4 G
第43题,C++语言允许使用友元,但是友元会破坏封装性。
T、对8 ?; F' E! D4 f$ fU
F、错
正确答案:
第44题,在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的。3 x. ^, S/ T; q/ h0 E2 {9 P8 p5 @# D
T、对
F、错
正确答案:
0 L% a, u( G- `! E3 f# `9 Y/ X
第45题,打开ASCII码流文件和二进制流文件时,打开方式是相同的。
T、对/ Z: u* c- D+ h# v$ e: b
F、错9 Z2 b7 k) L; X- N" w5 U
正确答案:9 `' [7 @. |: Z8 T6 K
第46题,在C++中,可以声明虚构造函数和虚析构函数。1 M: [0 r6 q1 D0 W$ @" ?1 c( |
A、错误
B、正确( K: `, R! \# o) f! M; \2 ?
正确答案:
第47题,继承性是指同样的消息被不同对象接收时可产生不同的行为。
T、对2 Z9 i$ h' a* w8 q
F、错
正确答案:0 e: K7 g* |( Z) l: |9 T
" W9 v6 F- ~7 _4 I" C
第48题,运算符[]只能用成员运算符来重载,不能用友元运算符来重载。1 W/ f& U( K8 S6 a, ]* {# L+ V* E
T、对
F、错
正确答案:
第49题,一个静态成员函数无论是公有还是私有,都可以通过类名直接访问。3 O( wh2 G3 e5 |3 @
T、对" E6 ]. U2 A& H2 ~0 T% k
F、错# K& S, W0 x4 q' E# ]
正确答案:
第50题,当类的继承方式为公有继承时,基类的私有成员在派生类中不可访问。
T、对
F、错# U: VV$ b( O( f- y& v- X- g- W
正确答案:
页:
[1]