版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、面向对象复习提纲(2013-2014-02,计科) 参考版【参考:课本、PPT 讲义】一、在回答问题时,可以适当加入C+代码。代码书写要清晰,格式要标准。下述内是各 章的主要考点,可能以填空、选择、判对错、问答、分析程序写结果等形式出现叙述面向对象技术的特点是什么?(提示:封装、继承、多态。Ref.第?章)使用 const 定义常量与用使用 define 定义常量相比,有什么优点? (Ref. 第?章)const定义常量是有数据类型的,可以对其进行数据静态类型安全检查.const在编译时分配存 储空间;W#define在预编译时编译,不分配存储空间用代码说明在标准C+中如何进行输入输出,并解释
2、各语句的含义是什么? (Ref.第? 章)C+中如何进行静态类型转换,解释并举例说明。(Ref.第?章)阐述C+ +中函数三种调用的方式实现机制、特点及其实参、形参的格式,最好用代码 说明。(提示:传址、传值、引用传递)(Ref.第?章)什么是先验条件(Precondition),什么是后置条件(Postcondition)? (google)什么是名称空间(namespace),它的主要作用是什么? (Ref.第?章)什么是重载(Overloading),解释并举例说明?能否根据返回值不同,对函数进行重载, 为什么? (Ref. 第?章)总结一下关键字 const 的用法?( Ref. 第?
3、章, google)操作符 new 的作用是什么?如何申请单个空间?如何申请动态数组?用 new 创建一个 类的对象时,会发生哪些操作?必要时,请用代码说明。 ( Ref. 第?章)操作符 delete 的作用是什么?如何删除单个用 new 申请的空间?如何删除申请的动态 数组?用 delete 删除一个类的对象时,会发生哪些操作?必要时,请用代码说明。 ( Ref. 第 ?章)什么是悬挂指针(又称为野指针,Dangling Pointers),其危害是什么?( Ref.第?章, google)什么是类?通常一个类中包含什么样的内容?定义一个类的语法是什么,试举例说明。 ( Ref. 第?章)
4、类中的成员可以用public/protected/private分别进行修饰,这三种成员在什么情况下是可 以被访问的? ( Ref. 第?章)什么是封装?其作用是什么? ( Ref. 第?章, google)什么是构造函数?构造函数有返回值吗?构造函数如何命名?构造函数可以重载吗? 什么是缺省构造函数(default constructor)? ( Ref.第?章)构造函数的作用是什么?什么时候会被调用?构造函数的执行顺序是什么(父类与子类 的构造函数、类本身与其类型是类的数据成员的构造函数)? ( Ref. 第?章)为什么拷贝构造函数(copy constructor)的参数必须是按引用传递
5、(by reference)而不能 是按值传递(by value)? (PPT11-P51, CH11)全局对象(Global scope objects)的构造函数、析构函数分别是什么时候被调用的?自动局 部对象(Automatic local objects)的构造函数、析构函数分别是什么时候被调用的?静态 局部对象(static local objects)的构造函数、析构函数分别是什么时候被调用的?(CH9, PPT9-p62)什么是初始化列表(Initialization Sections)?它的作用是什么?( Ref.第?章)什么是抽象数据类型(ADT)?抽象类的作用是什么?抽象类
6、是否可实例化?( Ref.第? 章,google)什么是 this 指针,其作用是什么? ( Ref. 第?章)什么是友元(friend)函数?为什么要使用友员函数?( Ref.第?章)什么是运算符重载?为什么要使用运算符重载?如何进行运算符重载,举例说明。( Ref. 第?章)什么是析构函数?析构函数有返回值吗?析构函数如何命名?析构函数可以重载吗?( Ref. 第?章)析构函数的作用是什么?什么时候会被调用?为什么析构函数通常是虚函数、如果不是 虚函数,会如何? ( Ref. 第?章, google)拷贝构造函数 (复制构造函数 )的作用是什么?什么是浅拷贝?什么是深拷贝?( Ref.第
7、?章, google)什么是 C+ 中的三大函数(The Big Three)? ( Ref.第?章,google)常见的类与类之间的关系有哪几种?两个什么样的类可以实现为继承关系? ( Ref. 第 ?章、第?节, google)父类成员中的 public、protected、private 成员,哪些在子类中是可以访问的?在公有继 承、私有继承、受保护继承三种继承方式下,父类成员中的 public、protected、private 成员被继承到子类后,其可访问性分别是什么? ( Ref. 第?章)多重继承会带来什么问题?在C+中是如何解决的?( Ref.第?章)对于函数调用,什么是前期绑
8、定(Early Binding,又称为静态联编)?什么是的后期绑定 (Late Binding,又称为动态联编)?重载函数是后期绑定吗,如果不是为什么?举例说明。 ( Ref. 第?章)要让一个函数调用表现出多态特征,必须满足哪些条件? ( Ref. 第?章)什么是隐藏(hiding)、覆盖(overriding)、重载(overloading)?对比它们的异同? C+代码 为例进行说明。 ( Ref. 第 ?章)什么是多态? ( Ref. 第?章)什么是切片(Slicing)? ( Ref.第?章,注意参考讲义)简述C+中的异常处理机制。要捕获某段代码中的所有异常,应该如何编写代码? (Re
9、f. 第?章)分别举例说明用于算法抽象的模板和用于数据抽象的模板。 (Ref. 第?章, google)dynamic-cast的作用是什么?试举一例说明。(Ref.第?章)二、分析程序,写出运行结果1.class BC public:BC( ) sBC = new char3; cout BC allocates 3 bytes.n; BC( ) delete sBC; cout BC free 3 bytes.n; private:char* sBC;class DC : public BC public:DC( ) sDC = new char5; cout DC allocates 5
10、 bytes.n; DC( ) delete sDC; cout DC free 5 bytesAn; private:char* sDC;int main( ) DC d;cout “” endl;return 0;2.class TradesPerson public:virtual void sayHi() cout Just hi. endl; void run() cout Base:run endl; ;class Tinker : public TradesPerson public:virtual void sayHi() cout Tinker. endl; void run
11、() cout Tinker:run endl; ;class Tailor : public TradesPerson public:void sayHi() cout Tailor. endl; void run() cout Tailor:run endl; ;int main( ) TradesPerson* p;int which ;cout which;switch( which )case 1: p = new TradesPerson; break;case 2: p = new Tinker; break;case 3: p = new Tailor; break;p-say
12、Hi(); p-run(); delete p;return 0; 3.void fl(int i)coutvv”in void f1(int i)”vvendl;void fl(string st) coutvvin void f1(string st)vvendl;int main()int i=0;string st=acb;fl(st);fl(i);return 0;4.class BC1 public:BC1( ) sBC = new char3; cout BC1 allocates 3 bytes.n; BC1( ) delete sBC; cout BC1 free 3 byt
13、esAn; private:char* sBC;class BC2 public:BC2( ) sBC = new char5; cout BC2 allocates 5 bytes.n; BC2( ) delete sBC; cout BC2 free 5 bytes.n; private:BC1 bc1;char* sBC;int main( ) BC1 bc1;BC2 bc2;cout “” endl;return 0;5.class C1public:C1()i=1;void incI()i+;int getI()return i;private:int i;void f1(C1 c)
14、c.incI();coutincI();coutvvin fl * vvc-getI()vvendl;void f2(C1 & c)c.incI();coutvvin f2 & vvc.getI()vvendl;int main()Cl c;fl(c);f1(&c);f2(c); return 0;三、编程基本能写出框架的给?分; 基本能写出类的实现的给?分; 基本能写出类的应用的给?分; 整个答案只有少许错误的给满分。采用面向对象的方式编写一个通迅录管理程序,通迅录中的信息包括:姓名,公司,联 系电话,邮编。要求的操作有:添加一个联系人,列表显示所有联系人。先给出类定义,然 后给出类实现。(
15、提示:可以设计二个类,一个通迅录条目类CommEntry, 个通讯录类 Commus)在一个公司中有两个类型的人员:雇员(employee)和管理者(manager),注意管理也 是一个(is a)雇员。每个雇员有以下基本信息:姓名(name)、年龄(age)、工作年限(workYear) 和部门号(depNo )。并且一个管理者还有更多的属性:级别( level)和管理的雇员(numOfEmployee,可以用数组定义)。一个雇员或是管理者具有以下的行为:void main()Employee e(“Jack, 24, 2, “Development);Manager m(“Tom, 30,
16、 5, “Development, 2);m.addMember(&e);/ m 管理 ee.printOn();/显示Jack所有数据成员的信息m.printOn();显示Tom所有数据成员的信息Employee* p = &e;bool b = p-retire(); /如果雇员的年龄是55,则b为truep = &m;b = p-retire ();/如果管理者的年龄是60,则b为true分别定义并实现类Employee和Manager。3.已知类的定义如下:class Base protected:int iBody;public:virtual void printOn() = 0;
17、Base(int i = 0) : iBody(i) virtual int display(int x=60):iBody(x)return iBody;class Subl : public Base public:Sub1(int i, string s);class Sub2 : public Base public:Sub2(int i, short s);;试完成类Sub1和Sub2的定义和操作的实现代码,使之能符合下面程序及在注释中描述的 运行结果的要求:main()Sub1 s1(1000, This is an object of Sub1);Sub2 s2(1000, 20); s1.printOn(); s2.printOn();/ 此时显示出:1000: This is an object of Sub1/此时显示出:20 and 1000c
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 合法公司劳动合同范例
- 江沁苑合同范例
- 围栏磨具转让合同范例
- 易货业务合作合同范例
- 承包乡级公路合同范例
- 氩气设备采购合同范例
- 民间土方出售合同范例
- 木格安装合同范例
- 成品服饰订购合同范例
- 正岩建设集团合同范例
- 民族团结主题班会教学课件
- 国开成本会计第14章综合练习试题及答案
- 幼儿园教育活动设计与指导(第二版)教案第二章第二节幼儿园语言教育活动设计二
- 外观检查记录表
- GB∕T 13171.1-2022 洗衣粉 第1部分:技术要求
- 气温的变化与分布 完整版课件
- 现在完成时的用法 完整版课件
- 中小学古诗词首
- DB11T 1411-2017 节能监测服务平台建设规范
- 外科学教案-心脏疾病
- 白内障手术流程
评论
0/150
提交评论