欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    面向对象程序设计复习.doc

    • 资源ID:35146233       资源大小:87.50KB        全文页数:26页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    面向对象程序设计复习.doc

    面向对象程序设计期末总复习题一、单项选择题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.某个对象名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.<=9.下列关于运算符重载描述中,_是正确。(D)A.运算符重载可以改变操作数个数B.运算符重载可以改变优先级C.运算符重载可以改变结合性D.运算符重载不可以改变语法结构10. 在下列函数原型中,可以作为类AA构造函数是_(D)Avoid AA(int) ;Bint AA( ) ;CAA(int)const;DAA(int);11.在声明类时,下面说法正确是_。(C)A.可以在类声明中给数据成员赋初值B.数据成员数据类型可以是registerC.private,public,protected可以按任意顺序出现D.没有用private,public,protected定义数据成员是公有成员12.继承具有_,即当基类本身也是某一个类派生类时,底层派生类也会自动继承间接基类成员。(B)A.规律性B.传递性C.重复性D.多样性13.在多重继承中,公有派生与私有派生对于基类成员在派生类中可访问性及单继承规则_。(A)A.完全相同B.完全不同C.部分相同,部分不同D.以上都不对14.对虚函数调用_。(D)A.一定使用动态联编B.必须使用动态联编C.一定使用静态联编D.不一定使用动态联编15.关于成员函数特征下述描述中,_是错误。(A)A.成员函数一定是内置函数B.成员函数可以重载C.成员函数可以设置参数默认值D.成员函数可以是静态16. 下面关于c+语言变量叙述错误是_(B)A在c+语言中变量分为auto,static,extern与register四种存储类型B自动变量与外部变量作用域为整个程序C内部变量作用域是定义它函数D外部静态变量作用域是定义它文件 17.下列各类函数中,_不是类成员函数。(C)A.构造函数B.析构函数C.友元函数D.拷贝构造函数18. 有如下类声明:class Foo ing bar ;则Foo类成员bar是_(C)A公有数据成员B公有成员函数C私有数据成员D私有成员函数19.下列表示引用方法中,_是正确。已知:int m=10; (D)A. float &t=&m;B.int &y=10;C.int &z;D. int &x=m;20.设置虚基类目是_。(B)A.简化程序B.消除二义性C.提高运行效率D.减少目标代码21对于类中定义成员,其隐含访问权限为_(B)A.publicB.privateC.staticD.protected22关于类与对象不正确说法是_ (B)A.类是一种类型,它封装了数据与操作B.一个类对象只有一个C.对象是类实例D.一个对象必属于某个类23声明一个类对象时,系统自动调用一个函数;撤消对象时,系统自动调用一个函数;该函数为_c_A.成员函数;构造函数B.复制构造函数;析构函数C.构造函数;析构函数D.析构函数;复制构造函数24当一个派生类私有继承一个基类时,基类中所有公有成员与保护成员成为派生类_A_ A.private成员B.protected成员C.public成员D.友元25在C+中,要实现动态联编,必须使用_D_调用虚函数A.类名B.派生类指针C.对象名D.基类指针26若一个类中含有纯虚函数,则该类称为_A_ A.抽象类B.纯基类C.派生类D.基类27下列关于this指针叙述中,正确是_D_A任何及类相关函数都有this指针B类成员函数都有this指针C类友元函数都有this指针D类非静态成员函数才有this指针28有如下类声明:class Book int num() ;则Book类成员num是_D_A公有数据成员B公有成员函数C私有数据成员D私有成员函数29下面有关重载函数说法中正确是_C_ A.重载函数必须具有不同返回值类型;B.重载函数形参个数必须不同;   C)重载函数必须有不同形参列表;D.重载函数名可以不同;30设置虚基类目是_A_ A.消除二义性B.简化代码C.提高运行效率D.减少目标代码31在C+语言程序中,对象之间相互通信通过_B_ A.继承实现B.调用成员函数实现C.封装实现D.函数重载实现32下列运算符中,在C+语言中不能重载是_C_ A.*B.>=C.:D./33下面对友元函数描述正确是_C_ A.友元函数实现必须在类内部定义B.友元函数是类成员函数C.友元函数破坏了类封装性与隐藏性D.友元函数不能访问类私有成员34下面叙述不正确是_A_ A.基类保护成员在派生类中仍然是保护成员B.基类保护成员在公有派生类中仍然是保护成员C.基类保护成员在私有派生类中是私有成员D.对基类成员访问必须是无二义性35下面对静态数据成员描述中,正确是_D_ A.静态数据成员可以在类体内进行初始化B.静态数据成员不可以被类对象调用C.静态数据成员不能受private控制符作用D.静态数据成员可以直接用类名调用36在C+类语言体系中,不能被派生类继承有_BA转换函数B构造函数C虚函数D静态成员函数37在类定义中,用于为对象分配内存空间,对类数据成员进行初始化并执行其他内部管理操作函数是_C_ A.友元函数B.虚函数C.构造函数D.析构函数38下列关于虚基类描述中,错误是_B_ A.设置虚基类目是为了消除二义性;B.虚基类构造函数在非虚基类之后调用;C.若同一层包含多个虚基类,这些基类构造函数按照它们次序调用;D.若虚基类由非基类派生而来,则仍然先调用基类构造函数,再用派生类构造函数;39考虑函数原型void test(int a,int b=7,char="*"),下面函数调用中,属于不合法调用是_C_ A. test(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派生类对象地址可以赋给指向基类指针 43下面关于虚函数描述,错误是( )。 B  A在成员函数声明前面加上virtual修饰,就可把该函数声明为虚函数 B基类中说明了虚函数后,派生类中对应函数也必须说明为虚函数 C虚函数可以是另一个类友元函数,但不能是静态成员函数 D基类中说明纯虚函数在其任何派生类中都必须实现44定义派生类时,若不使用关键字显示地规定采用何种继承方式,则默认方式为( )。 AA私有继承 B非私有继承 C保护继承 D公有继承 45.有如下程序: #include using namespace std; class ONE int c; public: ONE():c(0)cout<<1; ONE(int n):c(n)cout<<2; class TWO ONE onel; ONE one2; public: TWO(int m):one2(m)cout<<3; int main() TWO t4() return 0 运行时输出结果是( )。 C A3 B23 C123 D213 46.关于静态数据成员描述中正确是DA)类静态数据成员不是类所有对象共享数据B)类静态数据成员不能被类成员函数调用C)类静态数据成员不能被类构造函数调用 D)类静态数据成员必须进行初始化47下面正确是,在父类中访问属性访问修饰符在子类中访问属性()CA)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.下列说法正确是BA)内联函数在运行时是将该函数目标代码插入每个调用该函数地方B)内联函数在编译时是将该函数目标代码插入每个调用该函数地方C)类内联函数必须在类体内定义D)类内联函数必须在类体外通过加关键字inline定义52.下面对静态数据成员描述中,正确是DA)静态数据成员可以在类体内进行初始化B)静态数据成员不可以被类对象调用C)静态数据成员不能受private控制符作用D)静态数据成员可以直接用类名调用二、知识点1.实现运行时多态性要使用虚函数。2.如果一个类至少有一个纯虚函数,那么就称该类为抽象类。3. 运算符重载不能改变操作符个数、运算符优先级、运算符结合性与运算符语法结构。4. 构造函数是一种特殊成员函数,它主要用来为对象分配内存空间,对类数据成员进行初始化并执行对象其他内部管理操作。5. 静态成员函数不能直接引用类中说明非静态成员。6. 引用是给对象取一个别名,它引入了对象同义词。7.设置友元函数目是为能够访问该类私有成员。8.运算符重载仍然保持原来优先级、结合性与语法结构。9.基类私有成员不能被派生类成员访问。10.静态联编支持多态性称为编译时多态性,也称静态多态性。11.任何类中允许有三种访问权限数据,这三种访问权限分别是public、private、protected。12.为了满足运算符“+”可交换性,必须将其重载为友元函数。13.对于含有对象成员派生类,其构造函数执行顺序为:先执行基类构造函数、再执行对象成员构造函数,后执行派生类构造函数。14.利用成员函数对双目运算符重载,其左操作数为this指针指出对象,右操作数为成员函数参数。15.C+允许在相同作用域内以相同名字定义几个不同实现函数,称这种同一个函数名多个含义现象为函数重载。16. 通过使用new与delete两个运算符进行分配为动态存储分配。17. 当类定义中有数据成员为指针时,解决浅拷贝出现运行错误方法是编写拷贝构造函数。18. 如果使用protected继承基类,其公有成员就会变成派生类保护成员,其保护成员就会变成派生类保护成员,其私有成员不能继承19. 一个函数功能不太复杂但要求被频繁调用,应定义为内联函数。20. 抽象类只能作为基类使用,而不能声明它对象。 21. 构造函数可以重载,析构函数不可以重载。22. 静态成员函数没有this指针。23. 类有两个特殊成员函数构造函数与析构函数。24. 在表达式x+y*z中,+是作为成员函数重载运算符,*是作为非成员函数重载运算符。其中operator+有一个参数,operator*有两个参数。25. 一个派生类只有一个基类情况称为单继承,而有多个直接基类情况称为多继承。26. 调用析构函数次序正好及调用构造函数次序相反。27. 非成员函数应说明为类友元函数才能访问这个类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派生类成员一般分为两部分,一部分是从基类继承成员,另一部分是自己定义新成员。35继承方式有公有继承、私有继承与保护继承3种。三、读程序写结果1.写出下列程序运行结果 #include <iostream.h>class samplepublic:sample()cout<<”hello”<<endl;void fn(int i)static sample c;cout<<”j=”<<i<<endl;void main()fn(20);fn(30);helloj=20j=302. 写出下列程序运行结果( )#include <iostream.h>int n=0;int & f(int m)n+=m;return n;void main()f(22)+=20;cout<<”n=”<<n<<endl;n=423.写出下列程序运行结果( )#include<iostream.h>class Apublic:int num;A(int i)num=i;A(A &a)num=a.num;num+=15;void print()cout<<num<<endl;void main()A a(8);A b(a);a.print();b.print();8234. 写出下列程序运行结果( )#include <iostream.h>void main()int a10=11,10,9,8,7,6,5,4,3,*p=a+5;cout<<*-p<<endl;*(p+3)+=5;cout<<p3<<endl;795. 写出下列程序运行结果( )#include <iostream.h>class A int a;public:void seta(int x)a=x;void showa()cout<<a<<endl;class B int b;public:void setb(int x)b=x;void showb()cout<<b<<endl;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()cout<<c<<endl;void main() C c; c.seta(8); c.showa(); c.setc(4,6,7); c.showc();876. 写出下列程序运行结果( )#include <iostream.h>class sample int n;public:sample()sample(int m)n=m;int &operator-(int) n-; return n;void disp()cout<<"n="<<n<<endl;void main() sample s(18); (s-)+; s.disp();n=187.写出下列程序运行结果( )#include <iostream.h>class sample int x;public:sample()void setx(int i)x=i;friend int fun(sample b,int n) int m=0; for(int i=0;i<n;i+) if(bi.x>m) 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;i<10;i+) ai.setx(arri); cout<<"the result is "<<fun(a,10)<<endl;the result is 688下列程序输出结果为 ( )#include<iostream.h>void fun(int x=0,int y=0)cout<<x<<y<<endl;void main()fun(18);1809. 写出下列程序运行结果 ( )#include<iostream.h>class M public: 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(); cout<<"j="<<i<<"i="<<j<<endl;j=22i=1810写出下列程序运行结果 ( )#include<iostream.h>class Catint num,age;public:Cat(int i,int j)num=i;age=j;Cat(Cat &c)num=c.num; age=c.age;num+;void print()cout<<num<<","<<age<<endl;void main()Cat c1(33,12);Cat c2(c1);c2.print();34,1211写出下列程序运行结果( )#include<iostream>using namespace std;class Teststatic int count;public:Test()+count;cout<<"对象数量="<<count<<endl;Test()-count;cout<<"对象数量="<<count<<endl;int Test:count=0;void main()Test t3;对象数量=1对象数量=2对象数量=3对象数量=2对象数量=1对象数量=012写出下列程序运行结果 ( )#include<iostream.h>#include<string.h>class 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)cout<<"Girl's name is "<<x.name<<",age:"<<x.age<<endl; void main() girle("李华",28); disp(e);Girl's name is李华,age:2813. 写出下列程序运行结果 ( )#include<iostream>using namespace std;class Bookint num,price;public:Book(int a=0,int b=0)num=a;price=b;void showMoney()cout<<num*price<<endl;void main()Book b=Book(2,8),Book(5,10),Book(13,20); Book *p;int i;p=&b2;for(i=0;i<3;i+,p-)p->showMoney();260501614. 写出下列程序运行结果 ( )#include<iostream.h> int f(int); int main() int i;for(i=0;i<5;i+) cout<<f(i)<<" " return 0; int f(int i) static int k=3; for(;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;i<2;i+)pi=chi;for(i=0;i<2;i+)for(j=0;pij>0;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 (3); 117以下程序输出结果是。void fun() static int a=0;a+=2;cout << a << " " void main() int cc;for(cc=1;cc<4;cc+)fun();cout << endl;2 4 6四、程序改错1.下面程序定义类point,并输出其数据成员值。根据注释写出正确语句。#include <iostream.h>class pointpublic: /正确为private:int x,y;private:/正确为public:point(int xx,yy) /正确为point(int xx,int yy)x=xx;y=yy;void disp()cout<<x<<" "<<y<<endl;void main() point p1(3,4); cout<<x<<y<<endl; /正确为p1.disp();2.下列程序定义一个时钟类,并能设置与显示时间,要求ShowTime()函数为内联函数。#include <iostream.h>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,int NewM,int NewS)Hour=NewH;Minute=NewM;Second=NewS;void Clock:ShowTime()/正确为inline void Clock:ShowTime() cout<<Hour<<":"<<Minute<<":"<<Second<<endl;int main() Clock myClock; cout<<"First time set and output:"<<endl; SetTime();/正确为myClock.SetTime(); myClock.ShowTime(); cout<<"Second time set and output:"<<endl; SetTime(8,30,30);/ 正确为 myClock.SetTime(8;30;30); myClock.ShowTime(); return 0;3. 下列程序定义了一个多继承派生类,根据注释找出错误写出正确语句。虚基类及最派生类#include<iostream.h>class 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(wb)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<<" 我能在水中游又能在天上飞! "<<endl;void main()Amphibian a; /正确为Amphibian a(2380); 实参任意正数a.show();4. 下列程序定义了运算符重载,根据注释找出错误写出正确语句。运算符重载#include<iostream.h>class 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()cout<<a<<' '<<b<<endl;M operator +(M& x) /正确为 M M:operator +(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 public:int y; ;classDeriveCommonB:publicCommonBase public:int z; ;classOverlapping:publicDeriveCommonA;publicDeriveCommonB/正确为class Overlapping:public DeriveCommonA,public DeriveCommonB public:voidDisplay() cout<<"Valuesare:"<<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 Shapepublic:Circle(double r):radius(r)virtual double area()constreturn 3.14159*radius*radius;protected:double radius;class Rectangle:public Shapepublic:Rectangle(double w,double h ):width(w),height(h)virtual double area()constreturn width*height;protected:double width,height;class Tirangle:public Shapepublic:Tirangle(double w,double h ):width(w),height(h)virtual double area()constreturn 0.5*width*height;protected:double width,height;void printArea(const Shape &s)cout<<s.area()<<endl;void main()Circle c(10);cout<<"圆面积="printArea(c);

    注意事项

    本文(面向对象程序设计复习.doc)为本站会员(叶***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开