书签 分享 收藏 举报 版权申诉 / 23
上传文档赚钱

类型面向对象程序设计复习资料(DOC 20页).doc

  • 上传人(卖家):2023DOC
  • 文档编号:5644316
  • 上传时间:2023-04-28
  • 格式:DOC
  • 页数:23
  • 大小:72KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《面向对象程序设计复习资料(DOC 20页).doc》由用户(2023DOC)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    面向对象程序设计复习资料DOC 20页 面向 对象 程序设计 复习资料 DOC 20
    资源描述:

    1、面向对象程序设计期末总复习题一、单项选择题1.下面关于对象概念的描述中,_是错误的。(B)A.对象代表着正在创建的系统中的一个实体B.对象就是C语言中的结构体变量C.对象是一个状态和操作(或方法)的封装体D.对象之间的信息传递是通过消息进行的2. 继承机制的作用是: (C)A信息隐藏B数据封装C定义新类D数据抽象3.有关析构函数的说法不正确的是_(D)A.析构函数有且只有一个B.析构函数无任何函数类型C.析构函数没有形参D.析构函数不能是虚函数4.友元的作用之一是_(A)A.提高程序的运行效率B.加强类的封装性C.实现数据的隐藏性D.增加成员函数的种类5.通常拷贝构造函数的参数是_。(C)A.

    2、某个对象名B.某个对象的成员名C.某个对象的引用名D.某个对象的指针名6.如果在基类中将show声明为不带返回值的纯虚函数,正确的写法是_。(C)A.virtual show()=0;B.virtual void show();C.virtual void show()=0;D.void show=0 virtual;7.下面关于友元的描述中,错误的是_。(D)A.友元函数可以访问该类的私有数据成员B.一个类的友元类中的成员函数都是这个类的友元函数C.友元可以提高程序的运行效率D.类与类之间的友元关系可以继承8.在C+中,_运算符不能重载。(B)A. +B.?:C.-D.=C.:D./33下面

    3、对友元函数描述正确的是_C_ A.友元函数的实现必须在类的内部定义B.友元函数是类的成员函数C.友元函数破坏了类的封装性和隐藏性D.友元函数不能访问类的私有成员34下面叙述不正确的是_A_ A.基类的保护成员在派生类中仍然是保护成员B.基类的保护成员在公有派生类中仍然是保护成员C.基类的保护成员在私有派生类中是私有成员D.对基类成员的访问必须是无二义性35下面对静态数据成员的描述中,正确的是_D_ A.静态数据成员可以在类体内进行初始化B.静态数据成员不可以被类的对象调用C.静态数据成员不能受private控制符的作用D.静态数据成员可以直接用类名调用36在C+类语言体系中,不能被派生类继承的

    4、有_BA转换函数B构造函数C虚函数D静态成员函数37在类的定义中,用于为对象分配内存空间,对类的数据成员进行初始化并执行其他内部管理操作的函数是_C_ A.友元函数B.虚函数C.构造函数D.析构函数38下列关于虚基类的描述中,错误的是_B_ A.设置虚基类的目的是为了消除二义性;B.虚基类的构造函数在非虚基类之后调用;C.若同一层包含多个虚基类,这些基类的构造函数按照它们的次序调用;D.若虚基类由非基类派生而来,则仍然先调用基类构造函数,再用派生类的构造函数;39考虑函数原型voidtest(inta,int b=7,char=*),下面的函数调用中,属于不合法调用的是_C_A. test(5

    5、)B.test(5,8)C.test(6,#)D.test(0,0.*); 40下列关于构造函数的描述中,错误的是_D_ A.构造函数可以设置默认参数;B.构造函数在定义类对象时自动执行C.构造函数可以是内联函数;D.构造函数不可以重载41.在重载一个运算符时,如果其参数表中有一个参数,则说明该运算符是( )。 D A一元成员运算符 B二元成员运算符 C一元友元运算符 D选项B和选项C都可能 42在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的是( )。 CA派生类的对象可以赋给基类的对象 B派生类的对象可以初始化基类的引用 C派生类的对象可以直接访问基类中的成员 D派生类的

    6、对象的地址可以赋给指向基类的指针 43下面关于虚函数的描述,错误的是( )。 B A在成员函数声明的前面加上virtual修饰,就可把该函数声明为虚函数 B基类中说明了虚函数后,派生类中对应的函数也必须说明为虚函数 C虚函数可以是另一个类的友元函数,但不能是静态成员函数 D基类中说明的纯虚函数在其任何派生类中都必须实现44定义派生类时,若不使用关键字显示地规定采用何种继承方式,则默认方式为( )。 AA私有继承 B非私有继承 C保护继承 D公有继承 45.有如下程序: #include using namespace std; class ONE int c; public: ONE():c(

    7、0)cout1; ONE(int n):c(n)cout2; ; class TWO ONE onel; ONE one2; public: TWO(int m):one2(m)cout3; ; int main() TWO t4() return 0 运行时的输出结果是( )。 C A3 B23 C123 D213 46.关于静态数据成员的描述中正确的是DA)类的静态数据成员不是类的所有对象共享的数据B)类的静态数据成员不能被类的成员函数调用C)类的静态数据成员不能被类的构造函数调用 D)类的静态数据成员必须进行初始化47下面正确的是,在父类中的访问属性访问修饰符在子类中的访问属性()CA)

    8、public,private不能直接访问 B)protect,public,publicC)private,public不能直接访问 D)protect,private,protect48类A是类B的友元,类B是类C的友元,则下列说法正确的是DA)类B是类A的友元B)类C是类A的友元C)类A是类C的友元D)以上都不对49下列关于构造函数说法不正确的是CA)构造函数必须与类同名 B)构造函数可以省略不写C)构造函数必须有返回值 D)在构造函数中可以对类中的成员进行初始化50.类的析构函数的作用是DA)一般成员函数的初始化 B)类的初始化C)对象的初始化D)删除类创建的对象51.下列说法正确的是B

    9、A)内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方B)内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方C)类的内联函数必须在类体内定义D)类的内联函数必须在类体外通过加关键字inline定义52.下面对静态数据成员的描述中,正确的是DA)静态数据成员可以在类体内进行初始化B)静态数据成员不可以被类的对象调用C)静态数据成员不能受private控制符的作用D)静态数据成员可以直接用类名调用二、知识点1.实现运行时的多态性要使用虚函数。2.如果一个类至少有一个纯虚函数,那么就称该类为抽象类。3. 运算符重载不能改变操作符的个数、运算符的优先级、运算符的结合性和运算符的语法

    10、结构。4. 构造函数是一种特殊的成员函数,它主要用来为对象分配内存空间,对类的数据成员进行初始化并执行对象的其他内部管理操作。5. 静态成员函数不能直接引用类中说明的非静态成员。6. 引用是给对象取一个别名,它引入了对象的同义词。7.设置友元函数的目的是为能够访问该类的私有成员。8.运算符重载仍然保持原来的优先级、结合性和语法结构。9.基类的私有成员不能被派生类的成员访问。10.静态联编支持的多态性称为编译时的多态性,也称静态多态性。11.任何类中允许有三种访问权限的数据,这三种访问权限分别是public、private、protected。12.为了满足运算符“+”的可交换性,必须将其重载为

    11、友元函数。13.对于含有对象成员的派生类,其构造函数的执行顺序为:先执行基类的构造函数、再执行对象成员的构造函数,后执行派生类的构造函数。14.利用成员函数对双目运算符重载,其左操作数为this指针指出的对象,右操作数为成员函数参数。15.C+允许在相同的作用域内以相同的名字定义几个不同实现的函数,称这种同一个函数名多个含义的现象为函数重载。16. 通过使用new和delete两个运算符进行的分配为动态存储分配。17. 当类定义中有数据成员为指针时,解决浅拷贝出现的运行错误的方法是编写拷贝构造函数。18. 如果使用protected继承基类,其公有成员就会变成派生类的保护成员,其保护成员就会变

    12、成派生类的保护成员,其私有成员不能继承19. 一个函数功能不太复杂但要求被频繁调用,应定义为内联函数。20. 抽象类只能作为基类使用,而不能声明它的对象。 21. 构造函数可以重载,析构函数不可以重载。22. 静态成员函数没有this指针。23. 类有两个特殊的成员函数构造函数和析构函数。24. 在表达式x+y*z中,+是作为成员函数重载的运算符,*是作为非成员函数重载的运算符。其中operator+有一个参数,operator*有两个参数。25. 一个派生类只有一个基类的情况称为单继承,而有多个直接基类的情况称为多继承。26. 调用析构函数的次序正好与调用构造函数的次序相反。27. 非成员函

    13、数应说明为类的友元函数才能访问这个类的private成员。28. 通过使用new和delete两个运算符进行的分配为动态存储分配。29如果类B继承了类A,则称类A为类B的基类,类B称为类A的派生类30. 表达式operator+(x,y)还可以表示为x+y 。31 C+语言中的多态性分为编译时的多态性和运行时的多态性。 32将x+y*z中的+用成员函数重载,*用友元函数重载,应解释为x. operator+(operator*(y,z)33如果要把返回值为void的函数A声明为类B的友元函数,则应在类B的定义中加入的语句是friend void A( );34派生类的成员一般分为两部分,一部分

    14、是从基类继承的成员,另一部分是自己定义的新成员。35继承的方式有公有继承、私有继承和保护继承3种。三、读程序写结果1.写出下列程序的运行结果 #include class samplepublic:sample()cout”hello”endl;void fn(int i)static sample c;cout”j=”iendl;void main()fn(20);fn(30);helloj=20j=302. 写出下列程序的运行结果( )#include int n=0;int & f(int m)n+=m;return n;void main()f(22)+=20;cout”n=”nend

    15、l;n=423.写出下列程序的运行结果( )#includeclass Apublic:int num;A(int i)num=i;A(A &a)num=a.num;num+=15;void print()coutnumendl;void main()A a(8);A b(a);a.print();b.print();8234. 写出下列程序的运行结果( )#include void main()int a10=11,10,9,8,7,6,5,4,3,*p=a+5;cout*-pendl;*(p+3)+=5;coutp3endl;795. 写出下列程序的运行结果( )#include clas

    16、s A int a;public:void seta(int x)a=x;void showa()coutaendl;class B int b;public:void setb(int x)b=x;void showb()coutbendl;class C:public A,private Bprivate:int c;public:void setc(int x,int y,int z) c=z; seta(x); setb(y);void showc()coutcendl;void main() C c; c.seta(8); c.showa(); c.setc(4,6,7); c.sh

    17、owc();876. 写出下列程序的运行结果( )#include class sample int n;public:sample()sample(int m)n=m;int &operator-(int) n-; return n;void disp()coutn=nendl;void main() sample s(18); (s-)+; s.disp();n=187.写出下列程序的运行结果( )#include class sample int x;public:sample()void setx(int i)x=i;friend int fun(sample b,int n) int

    18、 m=0; for(int i=0;im) m=bi.x; return m;void main() sample a10; int arr=9,8,4,7,55,32,20,15,68,65; for(int i=0;i10;i+) ai.setx(arri); coutthe result is fun(a,10)endl;the result is 688下列程序的输出结果为 ( )#includevoid fun(int x=0,int y=0)coutxyendl;void main()fun(18);1809. 写出下列程序的运行结果 ( )#includeclass M publ

    19、ic: M(int a=0,int b=0) x=a;y=b; int getx() return x; int gety() return y; private: int x,y; ; void main() M op1(22,18); int i,j; i=op1.getx(); j=op1.gety(); coutj=ii=jendl; j=22i=1810写出下列程序的运行结果 ( )#includeclass Catint num,age;public:Cat(int i,int j)num=i;age=j;Cat(Cat &c)num=c.num; age=c.age;num+;v

    20、oid print()coutnum,ageendl;void main()Cat c1(33,12);Cat c2(c1);c2.print();34,1211写出下列程序的运行结果( )#includeusing namespace std;class Teststatic int count;public:Test()+count;cout对象数量=countendl;Test()-count;cout对象数量=countendl;int Test:count=0;void main()Test t3;对象数量=1对象数量=2对象数量=3对象数量=2对象数量=1对象数量=012写出下列程

    21、序的运行结果 ( )#include#includeclass girl public: girl(char *n,int d) name=new charstrlen(n)+1; strcpy(name,n); age=d; friend void disp(girl &); girl() delete name; private: char *name; int age; ;void disp(girl &x)coutGirls name is x.name,age:x.ageendl; void main() girle(李华,28); disp(e); Girls name is李华,

    22、age:2813. 写出下列程序的运行结果 ( )#includeusing namespace std;class Bookint num,price;public:Book(int a=0,int b=0)num=a;price=b;void showMoney()coutnum*priceendl;void main()Book b=Book(2,8),Book(5,10),Book(13,20); Book *p;int i;p=&b2;for(i=0;ishowMoney();260501614. 写出下列程序的运行结果 ( )#include int f(int); int mai

    23、n() int i;for(i=0;i5;i+) coutf(i)0;i-) k +=i*2; return k; 3 5 11 23 4315.有如下程序void main() char ch25=6937,8254,*p2;int i,j,s=0;for(i=0;i2;i+)pi=chi;for(i=0;i0;j+=2)s=10*s+pij-0;cout s; 该程序的输出结果是: 638516.以下程序的输出结果是long fun( int n) long s;if(n=1|n=2)s=2;else s=n-fun(n-1);return s; void main() cout fun

    24、(3); 117以下程序的输出结果是。void fun() static int a=0;a+=2;cout a ; void main() int cc;for(cc=1;cc4;cc+)fun();cout endl;2 4 6四、程序改错1.下面程序定义类point,并输出其数据成员的值。根据注释写出正确的语句。#include class pointpublic: /正确的为private:int x,y;private:/正确的为public:point(int xx,yy) /正确的为point(int xx,int yy)x=xx;y=yy;void disp()coutx ye

    25、ndl;void main() point p1(3,4); coutxyendl; /正确的为p1.disp();2.下列程序定义一个时钟类,并能设置和显示时间,要求ShowTime()函数为内联函数。#include class Clockpublic:void SetTime(int NewH=0,int NewM=0,int NewS);/ 正确的为void SetTime(int NewH=0,int NewM=0,int NewS=0)void ShowTime();private:int Hour,Minute,Second;void Clock:SetTime(int NewH

    26、,int NewM,int NewS)Hour=NewH;Minute=NewM;Second=NewS;void Clock:ShowTime()/正确的为inline void Clock:ShowTime() coutHour:Minute:Secondendl;int main() Clock myClock; coutFirst time set and output:endl; SetTime();/正确的为myClock.SetTime(); myClock.ShowTime(); coutSecond time set and output:endl; SetTime(8,30

    27、,30);/ 正确的为 myClock.SetTime(8;30;30); myClock.ShowTime(); return 0;3. 下列程序定义了一个多继承的派生类,根据注释找出错误写出正确的语句。虚基类与最派生类#includeclass Vehicleprotected:int weight;public:Vehicle(int w)weight=w;void show()cout class Vehicle endl;class Boat: public Vehicle/正确的为virtual public Vehiclepublic:Boat(int wb):Vehicle(w

    28、b)void show()cout 我能在水中游! endl;class Plane: public Vehicle/正确的为virtual public Vehiclepublic:Plane(int wp):Vehicle(wp)void show()cout 我能在天上飞! endl;class Amphibian: public Boat,public Planepublic:Amphibian(int wa) :Boat(wa),Plane(wa)/正确的为:Vehicle(wa),Boat(wa),Plane(wa)void show()cout 我能在水中游又能在天上飞! end

    29、l;void main()Amphibian a; /正确的为Amphibian a(2380); 实参任意正数a.show();4. 下列程序定义了运算符重载,根据注释找出错误写出正确的语句。运算符重载#includeclass Mint a,b;public:M()a=b=0; M(int aa,int bb)a=aa,b=bb; M operator + (int x); /正确的为 (M &x);M operator - (M x); /正确的为 (M &x);void OutB()couta bendl;M operator +(M& x) /正确的为 M M:operator +(

    30、M& x)M r;r.a=a+x.a;r.b=b+x.b;return r;M M:operator -(M& x)int r; /正确的为M r r.a=a-x.a; r.b=b-x.b; return r;void main()M x(3,5),y(8,4),z1,z2;z1=x+y;z2=x-y;z1.OutB();z2.OutB();5根据注释找出错误写出正确的语句classCommonBase public:int x; ;class DeriveCommonA:public CommonBase /正确的为class DeriveCommonA:public CommonBase

    31、public:int y; ;classDeriveCommonB:publicCommonBase public:int z; ;classOverlapping:publicDeriveCommonA;publicDeriveCommonB/正确的为class Overlapping:public DeriveCommonA,public DeriveCommonB public:voidDisplay() coutValuesare:endl;int main() Overlappingov;ov.x=1; /正确的为ov. DeriveCommonA:x=1ov.y=2;ov.z=3;ov.Display();return0; 五、编程题1. 编写一个程序,声明抽象基类Shape,由它派生出3个派生类:Circle(圆形)、Rectangle(矩形)、Triangle(三角形),用一个函数printArea分别输出以上3者的面积,3个图形的数据在定义对象时给定。class Shape int n;public:virtual double area()const=0;class Circle:public Sha

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:面向对象程序设计复习资料(DOC 20页).doc
    链接地址:https://www.163wenku.com/p-5644316.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库