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

    2022年面向对象程序设计复习题.docx

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

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

    2022年面向对象程序设计复习题.docx

    精选学习资料 - - - - - - - - - 一、单项挑选题;1 引入内联函数的主要目的是 A缩短程序代码,少占用内存空间 B既可以保证程序的可读性,又能提高程序的运行效率 C提高程序的执行速度 D使程序的结构比较清楚 2 重载函数是 A以函数参数来区分,而不用函数的返回值来区分不同的函数 B以函数的返回值来区分,而不用函数参数来区分不同的函数 C参数表完全相同而返回值类型不同的两个或多个同名函数 D参数表和返回值类型都必需是不同的两个或多个同名函数3 有函数原型 void fun2 int *, 下面选项中,正确的调用是A double x = 2.17; fun2 &x; C int a = 15; fun2 a*3.14;B int b = 100; fun2 & b; D fun2 256;4 在 C+中, 要实现动态联编 , 必需使用 调用虚函数;D 基类指A 类名B 派生类指针 C 对象名针 5 在公有派生情形下,有关派生类对象和基类对象的关系,以下表达不正确的 是 A派生类的对象可以直接拜访基类中的全部成员 B派生类的对象可以初始化基类的引用 C派生类的对象可以赋给基类的对象 D 派生类的对象的地址可以赋给指向基类的指针 6 设置虚基类的目的是 A排除两义性 B 简化程序 C提高运行效率 D 削减目标代码 7 关于构造函数,以下说法错误选项 A 构造函数的作用是在对象被创建时使用特定的值构造对象,或者说 将对象初始化为一个特定的状态;在对象创建时由系统自动调用;B 基类的构造函数可以被派生类所继承;C 假如程序中未声明,就系统自动产生出一个缺省形式的构造函数;D 答应为内联函数、重载函数、带缺省形参值的函数;8 以下关于 C+函数的说明中,正确选项 A内联函数就是定义在另一个函数体内部的函数 B函数体的最终一条语句必需是 return 语句 C标准 C+要求在调用一个函数之前,必需先声明其原型 D编译器会依据函数的返回值类型和参数表来区分函数的不同重载形1 / 14 名师归纳总结 - - - - - - -第 1 页,共 14 页精选学习资料 - - - - - - - - - 式9 由于常对象不能被更新,因此 A通过常对象只能调用它的常成员函数 B通过常对象只能调用静态成员函数 C常对象的成员都是常成员 D通过常对象可以调用任何不转变对象值的成员函数 10 以下关于虚函数的说明中,正确选项A从虚基类继承的函数都是虚函数 C只能通过指针或引用调用虚函数 B虚函数不得是静态成员函数 D抽象类中的成员函数都是虚函数11 运算符重载是对已有的运算符给予多重含义,因此 A可以对基本类型 如 int 类型的数据,重新定义 “ +”运算符的含义 B可以转变一个已有运算符的优先级和操作数个数 C只能重载 C+中已经有的运算符,不能定义新运算符 DC+中已经有的全部运算符都可以重载 12 模板对类型的参数化供应了很好的支持,因此 A类模板的主要作用是生成抽象类 B类模板实例化时,编译器将依据给出的模板实参生成一个类 C在类模板中的数据成员都具有同样类型 D类模板中的成员函数都没有返回值 13 以下符号中可以用作 C+标识符的是 A_radius Bfoobar Celse D3room 14 以下语句中,错误选项 Aconst int buffer=256; Bconst int temp;Cconst double *point; Dconst double *rt =new double5.5;15 有如下程序:int x=3;do x -= 2;cout<<x;while.-x ;执行这个程序的输出结果是A 1 B 3 0 C l-2 D 死循环 16 有如下程序:#include <iostream> using namespace std;int main int *p ;*p = 9;2 / 14 名师归纳总结 - - - - - - -第 2 页,共 14 页精选学习资料 - - - - - - - - - cout<<"The value at p:"<<*p;return 0; 编译运行程序将显现的情形是A够编译时显现语法错误,不能生成可执行文件 B运行时肯定输出: The value at p: 9 C运行时肯定输出: The value at p: *9 D运行时有可能出错 17 有如下程序:#include <iostream> using namespace std;int main void functiondouble val ;double val;functionval;cout<<val;return 0; void functiondouble val val = 3; 编译运行这个程序将显现的情形是A编译出错,无法运行 B输出: 3 C输出: 3.0 D输出一个不确定的数 18 有如下类定义:class AA int a;public: int getRef constreturn &a; / int getValue constreturn a; / void setint n consta=n; / friend void showAA aa const cout<<aa; / ;其中的四个函数定义中正确选项A B CD 19有如下程序:3 / 14 名师归纳总结 - - - - - - -第 3 页,共 14 页精选学习资料 - - - - - - - - - #include <iostream> using namespace std;class Base public: void funcout<<"Base:fun"<<endl ; ;class Derived:public Base public: void fun cout<<"Derived:fun"<<endl ; ;int main Derived d;_;d.fun;return 0; 已知其执行后的输出结果为:Base:fun Derived:fun 就程序中下划线处应填入的语句是ABase.fun; BBase:fun CBase->fun Dfun;20 下面是重载为非成员函数的运算符函数原型,其中错误选项 AFraction operator + Fraction, Fraction;BFraction operator - Fraction;CFraction& operator = Fraction&, Fraction;DFraction& operator += Fraction&, Fraction;21 有如下类定义:class Foo public: Fooint v:valuev / Foo / 4 / 14 名师归纳总结 - - - - - - -第 4 页,共 14 页精选学习资料 - - - - - - - - - private: Foo / int value = 0; / ;其中存在语法错误的行是A B C D 22 有如下类定义:class Point int x_, y_;public: Point:x_0, y_0 Pointint x, int y = 0:x_x,y_y ;如执行语句 Point a2, b3, *c4 ;就 Point 类的构造函数被调用的次数是 A2 次 B3 次 C4 次 D5 次 23 有如下程序:#include <iostream> using namespace std;class A public: Acout<<"A" ; Acout<<"A" ; ;class B:public A A* p ;public: Bcout<<"B" ; p = new A; Bcout<<"B" ; delete p; ;int main B obj;return 0; 5 / 14 名师归纳总结 - - - - - - -第 5 页,共 14 页精选学习资料 - - - - - - - - - 执行这个程序的输出结果是ABAAABABABABAA CBAABAA DABAABA 24 有如下程序:#include <iostream> using namespace std;class Base private: void funl constcout<<"funl" ; protected: void fun2 constcout<<"fun2" ; public: void fun3 constcout<<"fun3" ; ;class Derived:protected Base public: void fun4 constcout<<"fun4" ; ;int main Derived obj;obj.funl ; / obj.fun2; / obj.fun3; / obj.fun4; / return 0; 其中有语法错误的语句是A B C D 25 有如下程序:#include <iostream> using namespace std;class Base public: void funlcout<<"Base "<<endl ; 6 / 14 名师归纳总结 - - - - - - -第 6 页,共 14 页精选学习资料 - - - - - - - - - virtual void fun2cout<<"Base"<<endl ; ;class Derived:public Base public: void funlcout<<"Derived"<<endl ; void fun2cout<<"Derived"<<endl ; ;void fBase &bb.funl ;b.fun2; int main Derived obj;fobj;return 0; 执行这个程序的输出结果是ABase BBase CDerived DDerived Base Derived Base Derived 26 有如下类声明:class SAMPLE int n;public: SAMPLE int i = 0: ni void setValueint n0; ;以下关于 setValue成员函数的实现中,正确选项 ASAMPLE:setValueint n0n = n0 ; Bvoid SAMPLE:setValueint n0n = n0 ; Cvoid setValueint n0n = n0; DsetValueint n0n = n0; );27以下函数模板的定义中,合法的是(Atemplate <typename T> T absT xreturn x<0.-x:x; Btemplate class <T> T absT xreturn x<0.-x:x; Ctemplate T <typename T> absT xreturn x<0.-x:x; ; Dtemplate T absT xreturn x<0.-x:x 28以下程序的运行结果为();# include <iostream > 7 / 14 名师归纳总结 - - - - - - -第 7 页,共 14 页精选学习资料 - - - - - - - - - class BASE public: BASEint icout<<" ;调用基类 BASE的构造函数: "<<i<<endl ; class A :public BASE public: A int a,int b:BASEa,b1b cout <<" 调用派生类 A 的构造函数: "<<a+b<<endl; private: BASE b1;void main A obj1,2; A 调用基类 BASE 的构造函数: 2 B 调用基类BASE 的构造函数: 1 调用基类 BASE 的构造函数: 1 调 用 基 类BASE 的 构 造 函数: 2 调用派生类 A 的构造函数: 3 调用派生类 A 的构造函数: 3 C 调用基类 BASE 的构造函数: 2 D 调用基类BASE 的构造函数: 1 调用派生类 A 的构造函数: 3 调 用 基 类BASE 的 构 造 函数: 329以下程序的运行结果为();# include<iostream.h> class T public: T int x a=x; b+=x ; ;static void display T c cout<< ” a=” <<c.a<<t <<” b=” <<c.b<<end l ; private: int a; static int b ; int T:b=5 void main T A3,B5;8 / 14 名师归纳总结 - - - - - - -第 8 页,共 14 页精选学习资料 - - - - - - - - - T:displayA;T:displayB; A a=3 b=8 B a=3 b=5 a=5 b=5 a=5 b=10 Ca=3 b=13 D a=3 b=8 a=5 b=13 a=5 b=13 30. 下面程序中对一维坐标点类 #include<iostream> using namespace std ;class point public: Point 进行运算符重载point (int vaI) x=val ; (*this); retum point operator+ () x+ ;retum*this; point operator+( int ) point old=*this,+old ; int GetX () const retum x private: ; int x; ;int main () point a (10);cout<< (+a).GetX();cout<<a+.GetX ();retum (); 编译和运行情形是 A)运行时输出 1011 B)运行时输出 1111 C)运行时输出 1112 D)编译有错 二、填空题;1 程序中有如下语句 forint i = 0 ; i<5; i+cout<<*p + i<<"," ;能够依次输出 int 型一维数组 DATA 的前 5 个元素;由此可知,变量 p 的定义及 初始化语句是 _;2 如下面程序运行时输出结果为 1, A, 10.1 2, B, 3.5 请将程序补充完整;,9 / 14 名师归纳总结 - - - - - - -第 9 页,共 14 页精选学习资料 - - - - - - - - - #include using namespace std;int main void testint, char,double _ ;test1,'A',10.1;test2,'B';return 0; void testint a, char b, double c cout<<a<<","<<b<<","<<c<<endl ; 3 有如下类声明:class MyClass int i;private: int j;protected:int k;public:int m, n; ;其中,私有成员的数量为 _ ;4 有如下程序:#include using namespace std;class ONE public: virtual void fcout<<"l" ; ;class TWO:public ONE public: TWOcout<<"2" ; ;class THREE:public TWO public: virtual void fTWO:f ; cout<<"3" ; ;int main 10 / 14 名师归纳总结 - - - - - - -第 10 页,共 14 页精选学习资料 - - - - - - - - - ONE aa, *p;TWO bb;THREE cc;p = &cc;p->f;return 0; 执行上面程序的输出是 _ ;5 有如下程序:#include using namespace std;class PARENT public: PARENTcout<<"PARENT" ; ;class SON:public PARENT public: SONcout<<"SON" ; ;int main SON son;PARENT *p;p = &son;return 0; 执行上面程序的输出是 _ ;6 如以非成员函数形式,为类 Bounce 重载“!”运算符,其操作结果为一 bool 型 数据,就该运算符重载函数的原型是 _ ;7 下面是复数类 complex 的定义,其中重载的运算符“ +”的功能是返回一个新的 复数对象,其实部等于两个操作对象实部之和,其虚部等于两个操作对象虚部之和;请补充完整:class complex 11 / 14 名师归纳总结 - - - - - - -第 11 页,共 14 页精选学习资料 - - - - - - - - - double real; /实部 double imag; /虚部 public: complexdouble r,double i:realr,imagi complex operator+complex a return complex_ ; ;8 已知一个函数模板定义为 template T1, typename T2> T1 FUNT2 n return n * 5.0 ; 如要求以int 型数据7 为函数实参调用该模板函数,并返回一个double 型数据,就该 调用应表示为 _;9 设 有 数 组 和 指 针 变 量 定 义 为 : int a23=1, 2 , 3 , 4, 5 ,*p=&a02;就表达式 *p+1 的值为:;10 有 字 符 数 组 和 字 符 指 针 定 义 : char s1= ” string ”,char s2= ” char ” ; char *const ps=s1;就使用指针 ps 进行操作时,可以转变ps,但不能转变 ps;11. 设 Cat 是已定义的类,整型变量a 是 Cat 类的公有成员变量, p 是 Cat 类的对象指针,且已指向Cat 类的对象 c,就用指针 p 给整型成员变量a 赋值 5 的语句为:;12在 C+语言中,运算符可以重载,运算符重载实质上就是函数的重载,运 算符重载实现的多态性属于:;13在 C+语言中,运算符可以重载,运算符重载实质上就是函数的重载,设后置运算符“+” 在类 A 的定义中被重载为成员函数,就对A 类对象 a 作运算a+,与该运算表达式等价的函数调用形式为:;14. 当爱护继承时,基类的成员在派生类中成为爱护成员,不能通过派生类的 对象来直接拜访该成员;15.在类中, _成员为类的全部对象所共享;12 / 14 名师归纳总结 - - - - - - -第 12 页,共 14 页精选学习资料 - - - - - - - - - 16. 假如使用数组名作为函数参数,形实结合时,传递的是17. 有如下定义:class MA int value;public: MA (int n=0):valut(n) _;MA*ta,tb;其中 MA 类的对象名标识符是 _;18. 如将一个二元运算符重载为类的成员函数,其形参个数应当是 个;_ 19. 有如下程序:#include<iostream> using namespace std ;class DA int k;public: ): k (x) DA(int x=1DA() cout<<k ; ;int main () DA d=DA (3),DA(3),DA(3) ;DA* p=new DA2 ;deletep return0 ; 这个程序的输出结果是 _ ;20. C+语言中的多态性分为编译时的多态性和 三、简答题;1. 什么叫做友元函数,什么叫做友元类?_ 时的多态性;2什么叫做多态性,面对对象的多态性可以分为哪四类?3什么叫做作用域? C+中有哪几种类型的作用域?4对比简述 C语言中函数内静态局部变量与C+中类的静态成员变量的特点;5简述用虚函数实现动态多态性的三个关键之处;6什么是内联函数,它有哪些特点?7列出拷贝构造函数被调用的三种情形;8比较类的三种继承方式public 、protected 、private之间的差别;9什么是虚基类?有何作用?10什么是编译时的多态?详细包括哪些类型?11函数模板与函数重载有哪些区分?13 / 14 名师归纳总结 - - - - - - -第 13 页,共 14 页精选学习资料 - - - - - - - - - 12构造函数与析构函数有什么作用?四、综合编程题;1函数编程:定义一函数模板swap,它能实现x、y 值的交换,在main 函数中用任意两个整数、两个浮点数分别使用这个函数模板;2函数编程:定义一函数void ContraryStrchar * str,它能实现字符串的逆序输出,在 main 函数中用任意字符串测试该函数;3类编程:定义一个表示工人的类 Worker,有两个一般数据成员工龄 age 和工资 pay,有一个静态成员人数 sum;定义一个有二个参数的构造函 数,给 age 和 pay 赋值,令 sum+;给 sum初始化为 0,定义一个静态成员函数 getsum,用于获得 sum的值;在 main 函数中以不同的方式定义二个工人对象,分别用二个对象和类名 输出相应人数;4派生类和虚函数编程:3 种方式调用 getsum 函数并(1) 定义一个抽象类 Shape,并且供应二个纯虚函数:运算并返回面积函数 reArea及运算并返回体积函数 reVolume;(2) 由 Shape类派生 Cube(正方体)类 ,它包括私有数据成员 length(边长) ,仍包含构造函数和两个纯虚函数的实现;(3) 由 Shape类派生 Ball(球形)类 ,它包括私有数据成员 radius(半径) , 也包含构造函数和两个纯虚函数的实现;注:球表面积公式 4 R 2,球体积公式 4 /3R 3 ;(4) 在 main 函数中创建矩形类、球类对象存入一个 shape类指针数组中,通过 for 循环将数组中各类图形的面积及体积输出;30分5运算符重载编程:(1) 设计一个简洁分数类 Fenshu,其包含两个整数的类数据成员分子 fenzi 、分母 fenmu,定义并实现一个有两个整数作参数的构造 函 数 , 并 定 义 一 个 普 通 成 员 函 数 show , 它 能 以“ fenzi/fenmu ” 格式输出分数;(2) 用成员函数方式重载+运算符,用友元函数方式重载- 运算符,实现分数类的 +和- 运算;(3) 在 main 函数中使用Fenshu 类和二个重载运算符进行+和 - 运算,并调用 show 函数进行输出;14 / 14 名师归纳总结 - - - - - - -第 14 页,共 14 页

    注意事项

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

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




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

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

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

    收起
    展开