嵌入式C高级编程

上传人:无*** 文档编号:72061736 上传时间:2022-04-07 格式:DOC 页数:9 大小:128KB
返回 下载 相关 举报
嵌入式C高级编程_第1页
第1页 / 共9页
嵌入式C高级编程_第2页
第2页 / 共9页
嵌入式C高级编程_第3页
第3页 / 共9页
点击查看更多>>
资源描述
嵌入式C+面向对象高级编程考试试题嵌入式C+面向对象高级编程笔试试卷请将填空题的答案填入表格中12345678910ACBBDDCCCA11121314151617181920ACBB BDDCCB21222324252627282930ABDACAA一、选择题1. 下列关于类和对象的叙述中,错误的是( ) (2分) A.一个类只能有一个对象 B.对象是类的具体实例 C.类是对某一类对象的抽象 D.类和对象的关系是一种数据类型与变量的关系 2. 当将一个类A或函数f()说明为另一个类B的友元后,类A或函数f()能够直接访问类B的( )。 (2分) A.只能是公有成员 B.只能是保护成员 C.只能是除私有成员之外的任何成员 D.任何权限的成员 3. 类中定义的成员默认为( )访问属性。 (2分) A.public B.private C.protected D.friend 4. 一个类的友元不是该类的成员,与该类的关系密切,所以它( )。 (2分) A.有this指针,有默认操作的对象 B.没有this指针,可以有默认操作的对象 C.有this指针,不能执行默认操作 D.没有this指针,也就没有默认操作的对象 5. 假定AA为一个类,a为该类私有的数据成员,GetValue( )为该类公有函数成员,它返回a的值,x为该类的一个对象,则访问x对象中数据成员a的格式为( )。 (2分) A.x.a B.x.a() C.x-GetValue() D.x.GetValue() 6. 对于任一个类,用户所能定义的构造函数的个数至多为( )。 (2分) A.0 B.1 C.2 D.任意个 7. 一个类的析构函数通常被定义为该类的( )成员。 (2分) A.私有 B.保护 C.公用 D.友元 8. 有如下类声明:class Foo int bar; ;则Foo类的成员bar是 ( ) (2分) A.公有数据成员 B.公有成员函数 C.私有数据成员 D.私有成员函数 9. 关于封装,下列说法中不正确的是( )。 (2分) A.通过封装,对象的全部属性和操作结合在一起,形成一个整体 B.通过封装,一个对象的实现细节被尽可能地隐藏起来(不可见) C.通过封装,每个对象都成为相对独立的实体 D.通过封装,对象的属性都是不可见的 10. 假定AB为一个类,则执行 “AB *s=new AB(a,5);”语句时得到的一个动态对象为( )。 (2分) A.s B.s-a C.s.a D.*s 11. 对于一个类的构造函数,其函数名与类名( )。 (2分) A.完全相同 B.基本相同 C.不相同 D.无关系 12. 在一个类的定义中,包含有( )成员的定义。 (2分) A.数据 B.函数 C.数据和函数 D.数据或函数 13. 假定AB为一个类,则执行AB x;语句时将自动调用该类的( )。 (2分) A.有参构造函数 B.无参构造函数 C.拷贝构造函数 D.赋值构造函数 14. 若类X是类Y的友元类,则下列哪种访问关系是正确的 (2分) A.类X的成员不能访问类Y的私有成员 B.类X的成员可以访问类Y的私有成员 C.类Y的成员可以访问类X的私有成员 D.只有类Y的公共成员才能访问类X的私有成员 15. 假定AB为一个类,则执行 “AB a, b(3), *p;”语句时共调用该类构造函数的次数为( )。 (2分) A.2 B.3 C.4 D.5 16. 在C+中,当一个对象被创建后,它的每一个成员函数都含有一个系统自动生成的隐含的指针,称之为( )指针。 (2分) A.对象 B.派生 C.基类 D.this 17. 静态数据成员的初始化是在( )中进行的。 (2分) A.构造函数 B.任何成员函数 C.所属类 D.类体外 18. 对于公有继承,基类中的私有成员在派生类中将 ( )。 (2分) A.能够直接使用成员名访问 B.能够通过成员运算符访问 C.仍然是基类的私有成员 D.变为派生类的私有成员 19. 建立包含有类对象成员的派生类对象时,自动调用构造函数的执行顺序依次为( )的构造函数。 (2分) A.自己所属类、对象成员所属类、基类 B.对象成员所属类、基类、自己所属类 C.基类、对象成员所属类、自己所属类 D.基类、自己所属类、对象成员所属类 20. 派生类的成员函数可以直接访问基类的( )成员。 (2分) A.所有 B.公有和保护 C.保护和私有 D.私有 21. 在c+中,一个虚函数是通过关键字( )放在其基类说明的前面来加以说明的. (2分) A.virtual B.protected C.operator D.this 22. 在C+中,对于基类的protected成员,当以protected方式派生一个新类时。该成员将成 为派生类的( )成员。 (2分) A.private B.protected C.public D.非法 23. 面向对象方法的多态性是指( )。 (2分) A.一个类可以派生出多个特殊类 B.一个对象在不同的运行环境中可以有不同的变体 C.针对一消息,不同的对象可以以适合自身的方式加以响应 D.一个对象可以是由多个其他对象组合而成的 24. 抽象类是( ): (2分) A.不可以定义对象 B.可以定义对象 C.不可以派生新类 D.不可以输出 25. 假定k是一个double类型的变量,则关于变量p的正确定义语句为( )。 (2分) A.double p=&k; B.int *p=&k; C.double *p=&k; D.char *p=”Thank you!”; 26. 若有定义:int aa8;则以下表达式中不能代表数组元素aa1的地址的是( )。 (2分) A.&aa0+1 B.&aa1 C.&aa0+ D.aa+1 27. 假定指针变量p定义为“int *p=new int;”,要释放p所指向的动态内存,应使用语句( )。 (2分) A.delete p; B.delete *p; C.delete &p; D.delete p; 二. 判断1. 域运算符(:)描述的是类和成员之间的关系。T2. 静态成员函数只能访问静态成员变量。F3. 构造函数和析构函数都可以重载。F4. 在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的。F5. 抽象类不可以继承,只能派生。F6. 类的私有成员只能被类中的成员函数访问,任何类以外的函数对它们的访问都是非法的。T7. 友元函数的声明不受访问区域的影响。T8. 子类可以继承父类的所有成员。F9. 使用new申请的内存,在程序执行结束时,必须使用delete释放。T10. 类A是类B的友元,则类B一定是类A的友元。F11. 静态成员变量每个对象都有一份拷贝。T12. 子类可以改造从父类继承的成员。T三、问答题1. 什么是“引用”?申明和使用“引用”要注意哪些问题?将“引用”作为函数参数有哪些特点?答:引用就是给一个变量起一个别名。引用一旦初始化,它就确定在一定的目标上,再也不分开;若一个变量声明为T&,即引用时,它必须用T类型的变量或对象,或能够转换成T类型的对象进行初始化;对void进行引用时不允许的;不能建立引用的数组;没有引用的指针或引用的引用;没有空引用等;特点:调用函数时,是直接传进该值,对引用的修改就是对原来变量的修改,效果与传址一样;在调用函数时,从表面上看不出来是引用还是普通值传递;2、 C+中的继承有几种形式? 各种方式中的派生类对基类成员的访问规则有什 答:继承方式有:派生继承、虚拟继承和多重继承规则有:public protected privatePublic public protecredprivateProtected protected protected privatePrivate private privateprivate 3、 举一个多态的例子,并以C+的格式给于定义和实现。答:Class A Virtual void function();Class B : public AVirtual void function();Int main() B b; b.function(); 4、派生类的构造函数和父类构造函数的执行顺序?答:顺序如下:基类构造函数、对象成员所属的构造函数、自己的构造函数5、什么是虚基类?他的作用是什么?答:当继承时,加上virtual关键字,就是所谓的虚拟继承,该基类就是虚基类; 作用:当继承重复时,会出现继承模糊的问题,虚拟继承会解决这个问题,即没有继承的时候继承,如果继承了则不需要再重复继承。6、解释:深拷贝,浅拷贝。答:浅拷贝:拷贝构造函数简单地制作了一个该资源的复制,而不对指针指向的堆空间拷贝一个复本堆空间,这样两个对象共享同一个堆空间,当其中一个对象析构时,另一个对象的指针则变成野指针,并且堆空间将产生两次delete的错误; 深拷贝:拷贝构造函数对指针属性所指的堆空间,也进行深度的空间复制,这样,两个对象就有独立的空间和资源,这是深拷贝。四、看程序题1.分析以下程序的执行结果 #include class Sample int A1010; public: int &operator()(int,int); ; int &Sample:operator()(int x,int y) return Axy; void main() Sample a; int i,j; for(i=0;i10;i+) for(j=0;j10;j+) a(i,j)=i+j; for(i=0;i10;i+) couta(i,1) ; coutendl; 答:1 2 3 4 5 6 7 8 9 10题2. 回答问题:该程序执行后的输出结果是什么?为什么? #include class A public: virtual void act1(); void act2() act1(); ; void A:act1() cout”A:act1() called。” class B:public A public: void act1(); void B:act1() cout”B:act1() called。” void main() B b; b.act2(); 输出:B:act1() called。 因为B类在继承A类时,B中有act1()且不是virtual型。对于A中的virtual的act1()不会再继承。嵌入式C+高级编程机试试卷一、已知String类定义如下:class Stringpublic:String(const char *str = NULL); / 通用构造函数String(const String &another); / 拷贝构造函数 String(); / 析构函数String & operater =(const String &rhs); / 赋值函数private:char *m_data; / 用于保存字符串;尝试写出类的成员函数实现。答:String:String(const char *str = NULL)Strcpy(m_data,str);String:String()String & String:operatetr = (const String &rhs)Strcpy(m_data,rhs);Int main()String a(“ssssssssss”);String b = a;二、在Time类中设计如下重载运算符函数:时间:小时、分、秒 实现加法、减法、前+、后+重载。 答:Class TimePublic:Int& operator+(int a);int& operator-(int a);Int& operator+()Int& operator+(int);Private:Int hh;Int mm;Int ss;三、环形缓冲区的C+实现(申请一块内存,作为缓冲区)接口可以对buf的读写。当空间不够时可以自动增加。四、系统功能分析 学生成绩管理系统的功能需求分析 :学生成绩管理系统主要提供学生资料的输入,学生资料的输出,学生资料的查询,学生资料删除,以及学生成绩的排序等.编程的体会心得:通过这次对学生成绩管理系统的编写,使我对现在所学的东西和以前所学的东西有了同一的了解,综合的运用,使我从中学到了很多很多. 整个管理系统的框架是这样的:先定义一个结构,再定义一个类,其中类中包含输入成员函数,输出成员函数,查找成员函数,排序成员函数,删除成员函数以及检查函数。主界面在主程序中输出。然后根据使用者输入的需要使用的模块所对应的(1-6)数字,而由主函数调用相对应的函数,完成使用者的需要,并且在主程序的开头还有对当前系统时间和日期的显示。 该程序共由六个模块构成,分别是:输入模块,输出模块,查找模块,删除模块,排序模块,退出模块。各模块的功能如下: 输入模块:该模块用于接收用户输入的学生信息。 输出模块:该模块用于输出用户输入的学生信息。 查找模块:按照用户输入的学号进行查找相对应的学生信息,如果找到便显示该生信息;否则,显示未找到。 删除模块:按照用户输入的学号进行查找相对应的学生信息,如果找到便显示该生信息并询问是否删除该信息,如果选择“是”就彻底删除该生信息;否则显示“未删除”,如果查找不到显示“未找到”。 排序模块:按照总分进行从大到小的排序并显示排序后的学生信息。 退出模块:退出该程序。 9
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 压缩资料 > 基础医学


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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