ImageVerifierCode 换一换
格式:DOCX , 页数:27 ,大小:22.57KB ,
资源ID:9652339      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9652339.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(面向对象程序设计复习题范文.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

面向对象程序设计复习题范文.docx

1、面向对象程序设计复习题范文1面向对象程序设计复习题一、 单项选择题1. ( )是面向对象系统包含的要素。A、类 B、多态 C、友元 D、重载答案:A2. 下列对常量的定义中,错误的是()。A、MyClass const obj(3,4); B、char * const p=hello;C、int i=1; const int &ref=i; D、void show() const;答案:C常量的定义:1常对象Const 类名 对象名【(实参列表)】类名 Const 对象名 【(实参列表)】 2 常数据成员 Const 类型 常数据成员 3 常成员函数 类型 成员函数名 Const 4 指向对象

2、的常指针 类名 * Const 指针变量名=对象地址 5 指向常变量的指针变量 Const 类型名 * 指针变量名3. 若有如下函数声明:void Fun(int x);,则下列()能与该函数进行重载。A、void Fun(int y); B、void Fun(int x,int y=1);C、int Fun(int x); D、void Fun(int) const;答案:D4. 下列对构造函数和析构函数的描述中,错误的是()。A、构造函数可以重载 B、析构函数名与类名相同 C、构造函数中可以设置参数的缺省值 D、类中只有一个析构函数答案:B5. 下列对友元的描述中,错误的是()。A、友元破

3、坏了类的封装性B、友元提高了程序的运行效率C、友元可以在类外声明和定义D、友元能够访问类中的私有成员答案:C6. 下列对继承的描述中,正确的是()。A、派生类对象能够访问基类的公有成员B、派生类继承了基类的公有成员和保护成员C、派生类对象不能访问基类的保护成员D、派生类不改变基类成员的访问权限答案:C7. 程序中,编译时出错的语句是()。class Base ; class Derived : public Base ;Derived objD1;Base objB=objD1; /ABase *pb=&objD1; /BBase &refB=objD1; /CDerived objD2=ob

4、jB; /D答案:B8. 下面对派生类的描述中,正确的是()。A、派生类是对基类的具体化B、一个派生类可以作为另一个派生类的基类C、派生类只能有一个直接基类D、派生类的缺省继承方式是public答案:B9. 实现动态联遍必须通过()调用虚函数。A、对象引用 B、成员名限定 C、对象名 D、构造函数答案:A10. C+流中重载的运算符,是一个( )。A、用于输出操作的非成员函数 B、用于输入操作的非成员函数C、用于输出操作的成员函数 D、用于输入操作的成员函数答案:B11. ( )不是面向对象系统包含的要素。A、多态 B、对象 C、类 D、继承答案:A12. 下列对常量的定义中,错误的是()。A

5、、int const size=10; B、char * const p=Good Luck;C、void const print(); D、const MyClass obj(10,10);答案:C13. 设Address表示整型变量x的地址,则下列语句执行后的输出结果为()。 int x=100,&r=x; coutx-rendl;A、Address-100 B、100-AddressC、Address-Address D、100-100答案:D14. 若函数原型为void Fun(int x=9,int y=8,char z=7),则下列调用错误的是( )。A、Fun() B、Fun(3

6、, 0)C、Fun(1,2) D、Fun(2,4, a)答案:B15. 若有如下函数声明:void Fun(int x);,则下列()不能与该函数进行重载。A、void Fun(int x,int y); B、void Fun(double x);C、void Fun(int x,int y=1); D、void Fun(int x) const;答案:C16. 下列对构造函数和析构函数的描述中,正确的是()。A、析构函数不可以重载 B、构造函数不能定义为内联函数 C、构造函数中不能设置参数的缺省值 D、析构函数名与类名不同答案:A17. 下面对静态成员的描述中,错误的是()。A、静态成员的提

7、出是为了解决数据共享问题B、静态数据成员的初始化在类体外进行C、类的不同对象有不同的静态数据成员值D、静态成员函数可以直接访问类中的静态数据成员答案:C18. 下列对友元的描述中,正确的是()。A、友元可以在类外声明和定义B、友元降低了程序的运行效率C、友元不能访问类中的保护成员D、友元破坏了类的封装性答案:D19. 下列对继承的描述中,错误的是()。A、派生类对象不能访问基类的保护成员B、派生类对基类成员的访问权限随着继承方式而改变C、派生类成员可以访问基类的私有成员D、派生类继承了基类的所有成员答案:C20. 程序中,编译时出错的语句是()。class Base ; class Deriv

8、ed : public Base ;Derived objD1;Base objB=objD1; /ABase *pb=&objD1; /BBase &refB=objD1; /CDerived objD2=objB; /D答案:D 21. 下面对派生类的描述中,错误的是()。A、派生类是对基类的具体化B、派生类能够作为基类继续派生新类C、派生类可以有多个直接基类D、派生类的缺省继承方式是private答案:A22. 实现动态联遍不能通过()调用虚函数。A、构造函数 B、对象引用 C、对象指针 D、成员函数答案:A23. 下面()不是抽象类的特性。A、可以说明纯虚函数B、不能说明抽象类的对象C

9、、用做基类,提供公共的接口D、可以定义虚构造函数答案:D24. C+流中重载的运算符,是一个( )。A、用于输出操作的成员函数 B、用于输出操作的非成员函数C、用于输入操作的成员函数 D、用于输入操作的非成员函数答案:B25:下列有关类的说法不正确的是( )。A 对象是类的一个实例B 任何一个对象只能属于一个具体的类C 一个类只能有一个对象D 类与对象的关系和数据类型与变量的关系相似答案:C分析:对象是类的一个实例,类与对象的关系和数据与变量的关系相似,所以一个类可以有多个对象。26:下面( )项是对构造函数和析构函数的正确定义。Avoid X:X(), void X:X()BX:X(参数),

10、 X:X()CX:X(参数), X:X(参数)Dvoid X:X(参数), void X:X(参数)答案:B分析构造函数无返回类型、可带参数、可重载;析构函数无返回类型、不可带参数、不可重载。27:( )的功能是对象进行初始化。 A析构函数 B. 数据成员 C.构造函数 D.静态成员函数答案:C分析:当一个对象定义时,C+编译系统自动调用构造函数建立该对象并进行初始化;当一个对象的生命周期结束时,C+编译系统自动调用析构函数注销该对象并进行善后工作;28:下列表达方式正确的是( )。Aclass P B class Ppublic: public:int x=15; int x; void s

11、how()coutx; void show()coutx; ; C class P D. class P int f; public: ; int a; f=25; void Seta (int x) a=x;答案:D分析:在类体内不可对数据成员进行初始化;类定义结束时需用分号;只有类中的成员函数才能存取类中的私有数据。29: 拷贝构造函数具有的下列特点中,( )是错误的。A 如果一个类中没有定义拷贝构造函数时,系统将自动生成一个默认的B 拷贝构造函数只有一个参数,并且是该类对象的引用C 拷贝构造函数是一种成员函数D 拷贝构造函数的名字不能用类名答案:D分析:如果一个类中没有定义拷贝构造函数时

12、,系统将自动生成一个默认的;拷贝构造函数只有一个参数,并且是该类对象的引用;拷贝构造函数的名字与类同名,并且不被指定返回类型;拷贝构造函数是一种成员函数。30:关于静态成员的描述中,( )是错误的。A 静态成员可分为静态数据成员和静态成员函数B 静态数据成员定义后必须在类体内进行初始化C 静态数据成员初始化不使用其构造函数D 静态数据成员函数中不能直接引用非静态成员答案:B分析:静态成员可分为静态数据成员和静态成员函数;静态数据成员被定义后,必须对它进行初始化,初始化在类体外进行,一般放在该类的实现部分最合适,也可以放在其他位置,例如,放在主函数前面等;静态数据成员初始化与该类的构造函数和析构

13、函数无关;在静态成员函数的实现中,可以直接引用静态成员,但不能直接引用非静态成员。31:关于友元的描述中,( )是错误的。A 友元函数是成员函数,它被说明在类体内B 友元函数可直接访问类中的私有成员C 友元函数破坏封装性,使用时尽量少用D 友元类中的所有成员函数都是友元函数答案:A分析:友元函数是非成员函数,在类体内说明了,在类体外定义,定义和调用等同于一般的普通函数;由于它可以直接访问类的私有成员,因此破坏了类的封装性和隐藏性,尽量少用。二、 填空题1. 下列运算符既可以作为类的成员函数重载,也可以作为类的友元函数重载,请在表格中的空白处填上正确的表达式。表达式成员函数友元函数a+b(1)(

14、2)a+(3)operator + (a, 0)-aa.operator - ( )(4)1. 答案: (1) a.operator+(b) (2) operator +(a,b) (3) a.operator+(0) (4) operator (0)2. 下列程序执行后的输出结果是12,21,22,请将下列程序补充完整。#include void fun1(1), int b) int c; c=a; a=b; b=c; void fun2(2), int *b) int c; c=*a; (3); *b=c; void fun3(4), int b) int c; c=a; (5); b=

15、c; void main() int x,y; x=1; y=2; fun1(x,y); coutxy,; x=1; y=2; fun2(&x,&y); coutxy,; x=1; y=2; fun3(x,y); coutxyendl;2. 答案: (1) int a (2) int *a (3) *a=*b (4) int &a (5) a=b 3. 下列程序执行后的输出结果是B0 D00 B1 D23 D B D B,请将下列程序补充完整。class Base public:Base(int i=0) x = i; coutBx ;Base() coutBx ; private:int x

16、;class Derived : public Base int y, z;public: _(1)_/ Constructor _(2)_/ Destructor;void main() Derived obj1; Derived obj2(1,2,3);3. 答案:(1) Derived(int a=0,int b=0,int c=0): Base(a) y=b; z=c; coutDyz ; (2) Derived() coutD ; 4:设有如下程序结构:class Box ;void main()Box A,B,C; 该程序运行时调用 (1) 次构造函数;调用 (2) 次析构函数。答

17、案:(1)3 (2)3分析:每创建一个对象自动调用一次构造函数,在这里创建了A、B、C三个对象,所以共调用了三次构造函数;每释放一个对象,系统自动调用一次析构函数,A、B、C对象释放时,分别调用析构函数,所以析构函数共调用了三次。5:设A为test类的对象且赋有初值,则语句test B(A); 表示 。答案:将对象A复制给对象B。分析:执行test B(A);语句相当于调用了默认复制构造函数,将A对象的属性复制给B对象。6:利用“对象名.成员变量”形式访问的对象成员仅限于被声明为 (1) 的成员;若要访问其他成员变量,需要通过 (2) 函数或 (3) 函数。答案:(1) public (2)

18、成员函数 (3)友元函数分析:类体内的数据成员可声明为公有的、私有的和保护的,公有的数据成员可利用“对象名.成员变量”形式来进行访问;私有的数据成员能被类中的其他成员函数或友元函数所调用;保护的数据成员可以在类体中使用,也可以在派生类中使用,但不能在其他类外通过对象使用。三、 阅读程序题1. #include class Test public: Test (double m,double n,double d):p(d) x=m; y=n; void Show(); void Show() const;private: double x, y; const double p;void Tes

19、t:Show() coutx,yendl; coutp=pendl;void Test:Show() const coutx,y constendl; coutp=p constendl;void main() Test a(8.9,2.5,3.1416); a.Show(); const Test b(2.5,8.9,3.14); b.Show();答案:8.9 2.5 p=3.1416 2.5 8.9 const p=3.14 const2. #include class Apublic: A(int i) coutConstructorendl; p=new int(i); A(A& r

20、)coutCopy constructorendl; p=new int(*r.p); A()coutDestructorendl; delete p; A& A:operator =(A& r); void output() cout*pendl;private: int *p;A& A:operator =(A& r) coutAssignmentendl; if(this=&r) return *this; delete p; p=new int(*r.p); return *this;void main() A a(5); A b=a; A c(6); c=a; c.output();

21、答案:Constructor Copy constructorConstructor Assignment 5 Destructor DestructorDestructor3. #include class Base1public: Base1(int x) coutBase1s con. xendl; Base1() coutBase1s des. endl; ;class Base2public: Base2(int x) coutBase2s con. xendl; Base2() coutBase2s des. endl; ;class Derived : public Base2,

22、public Base1public: Derived(int x,int y):Base1(y),Base2(x) coutDeriveds con.endl; Derived() coutDeriveds des.endl; ;void main() Derived obj(1,2);答案:Base2s con. 1 Base1s con. 2 Deriveds con. Deriveds des. Base1s des. Base2s des.4# include class A int a,b;public : A() a=b=0;coutDefault Constructing Ob

23、ject a bendl; A(int aa,int bb) a=aa; b=bb;cout Constructing Object a bendl; A() coutDestructing Object a bendl;void main() A x,y(2,3),z(4,5);答案: Default Constructing Object 0 0 Constructing Object 2 3 Constructing Object 4 5 Destructing Object 4 5 Destructing Object 2 3 Destructing Object 0 05 # inc

24、lude template class FF TT a1,a2,a3;public : FF(TT b1,TT b2,TT b3) a1=b1; a2=b2; a3=b3; TT Sum() return a1+a2+a3; ;void main() FF x(2,3,4),y(5,7,9); cout x.Sum() y.Sum()endl;答案:9 216:分析找出以下程序中的错误,说明错误原因,给出修改方案使之能正确运行。#includeclass one int a1,a2; public:one(int x1=0, x2=0);void main()one data(2,3); co

25、utdata.a1endl; coutdata.a2endl;分析:出错原因:构造函数参数表语法错;构造函数没有函数体;类的对象不能直接访问类的私有成员变量。改正后的程序如下: #include class one int a1, a2; public: one(int x1=0, int x2=0) a1=x1;a2=x2; int geta1() return a1; int geta2() return a2; ;void main()one data(2,3); coutdata.geta1()endl; coutdata.geta2()endl;7:分析以下程序的错误原因,给出修改方

26、案使之能正确运行。#include class Amplifier float invol,outvol;public: Amplifier(float vin,float vout) invol=vin;outvol=vout; float gain(); Amplifier:float gain() return outvol/invol; void main() Amplifier amp(5.0,10.0); coutgain()endl;分析:成员函数在类体外定义格式是:函数返回类型 类名:成员函数名(参数表);成员函数调用格式是:对象名.成员函数名(参数表)。改正后的程序如下:#include class Amplifier float invol,outvol;public: Amplifier(float vin,float vout) invol=vin;outvol=vout; float gain(); float Amplifier:gain() return outvol/invol; void main() Amplifier amp(5.0,10.0); coutnnThe

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1