




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第八章 多态 1 1 单选题单选题 1 下列关于运算符重载的描述中 D 是正确的 A 可以改变参与运算的操作数个数 B 可以改变运算符原来的优先级 C 可以改变运算符原来的结合性 D 不能改变原运算符的语义 2 下列函数中 不能重载运算符的函数是 b A 成员函数 B 构造函数 C 普通函数 D 友员函数 3 要求用成员函数重载的运算符是 A A B C D 4 要求用友员函数重载的运算符是 C A B C D 5 在 C 中 要实现动态联编 必须使用 D 调用虚函数 A 类名 B 派生类指针 C 对象名 D 基类指针 6 下列函数中 不能说明为虚函数的是 C A 私有成员函数 B 公有成员函数 C 构造函数 D 析构函数 7 在派生类中 重载一个虚函数时 要求函数名 参数的个数 参数的类型 参数 的顺序和函数的返回值 A A 相同 B 不同 C 相容 D 部分相同 8 C 中 根据 D 识别类层次中不同类定义的虚函数版本 A 参数个数 B 参数类型 C 函数名 D this 指针类型 9 虚析构函数的作用是 C A 虚基类必须定义虚析构函数 B 类对象作用域结束时释放资源 C delete 动态对象时释放资源 D 无意义 10 下面函数原型中 B 声明了 fun 为纯虚函数 A void fun 0 B virtual void fun 0 C virtual void fun D virtual void fun 11 若一个类中含有纯虚函数 则该类称为 C A 基类 B 纯基类 C 抽象类 D 派生类 12 假设 Aclass 为抽象类 下列正确的说明语句是 B A Aclass fun int B Aclass p C int fun Aclass D Aclass Obj 2 2 在 在 C C 中 使用类体系依靠什么机制实现程序运行时的多态 中 使用类体系依靠什么机制实现程序运行时的多态 解答 在 C 中 基类指针可以指向派生类对象 以及基类中拥有虚函数 是支持多态性的 前提 程序通过用同一个基类指针访问不同派生类的虚函数重载版本实现程序运行时的多 态 C 的虚特性负责自动地在程序运行时把基类指针的关联类型转换成当前指向对象的 派生类类型 另外 抽象类机制提供了软件抽象和可扩展性的手段 实现运行时的多态性 3 3 如果一个类的虚函数被声明为私有成员函数 会有语法错误吗 当它作为基类时 可以 如果一个类的虚函数被声明为私有成员函数 会有语法错误吗 当它作为基类时 可以 在应用类体系时实现动态联编吗 请你验证一下 在应用类体系时实现动态联编吗 请你验证一下 解答 没有语法错误 但在应用类体系时无法实现动态编联和多态 因为私有成员函数只在类 内可见 在类外无法调用 无法在类外通过基类指针实现多态 程序略 4 4 虚函数和纯虚函数的区别是什么 虚函数和纯虚函数的区别是什么 解答 虚函数定义时冠以关键字 virtual 本身有实现代码 作用是引导基类指针根据指向对象 调用类体系中不同重载版本函数 纯虚函数是指在说明时代码 为 0 的虚函数 即纯虚函数本身并没有实现代码 必 须通过它的派生类定义实现版本 5 5 阅读下列程序 写出运行结果 阅读下列程序 写出运行结果 include using namespace std class T public T a 0 b 0 c 0 T int i int j int k a i b j c k void get int j b k c T operator T obj private int a b c T T operator T obj T tempobj tempobj a a obj a tempobj b b obj b tempobj c c obj c return tempobj int main T obj1 1 2 3 obj2 5 5 5 obj3 int a b c obj3 obj1 obj2 obj3 get a b c cout obj1 obj2 a a t b b t c c t endl obj2 obj3 get a b c cout obj2 obj3 a a t b b t c c t endl 解答 obj1 obj2 a 5 b 10 c 15 obj2 obj3 a 25 b 50 c 75 6 6 阅读下列程序 写出运行结果 阅读下列程序 写出运行结果 include using namespace std class Vector public Vector Vector int i int j x i y j friend Vector operator Vector v1 Vector v2 Vector tempVector tempVector x v1 x v2 x tempVector y v1 y v2 y return tempVector void display cout x y endl private int x y int main Vector v1 1 2 v2 3 4 v3 cout v1 v1 display cout v2 v2 display v3 v1 v2 cout v3 v1 v2 v3 display 解答 v1 1 2 v2 3 4 v3 v1 v2 4 6 7 7 阅读下列程序 写出运行结果 阅读下列程序 写出运行结果 include using namespace std class Bclass public Bclass int i int j x i y j virtual int fun return 0 protected int x y class Iclass public Bclass public Iclass int i int j int k Bclass i j z k int fun return x y z 3 private int z int main Iclass obj 2 4 10 Bclass p1 obj cout p1 fun endl Bclass cout p2 fun endl cout p2 Bclass fun endl Bclass p3 cout fun endl 解答 0 5 0 5 8 8 阅读下列程序 写出运行结果 阅读下列程序 写出运行结果 include using namespace std class Base public virtual void getxy int i int j 0 x i y j virtual void fun 0 protected int x y class A public Base public void fun cout x x t y x x x x endl class B public Base public void fun cout x x t y y endl cout y x y x y getxy 10 pb fun pb pb getxy 100 20 pb fun 解答 x 10 y x x 100 x 100 y 20 y x y 5 9 9 分别使用成员函数和友员函数编写程序重载运算符 分别使用成员函数和友员函数编写程序重载运算符 使该运算符能实现两个字符串 使该运算符能实现两个字符串 的连接 的连接 解答 1 使用成员函数 include include using namespace std class s public s str 0 s char pstr strcpy str pstr char gets return str s operator s obj private char str 10 s s operator s obj strcat str obj str return str 或 return this int main s obj1 Visual obj2 C obj3 obj3 obj1 obj2 cout obj3 gets endl 2 使用友员函数 include include using namespace std class s public s str 0 s char pstr strcpy str pstr char gets return str friend s operator s obj1 s obj2 private char str 100 s operator s obj1 s obj2 s tempobj strcat tempobj str obj1 str strcat tempobj str obj2 str return tempobj int main s obj1 Visual obj2 C obj3 obj3 obj1 obj2 cout obj3 gets endl 1010 定义一个整数计算类 定义一个整数计算类 IntegerInteger 实现短整数 实现短整数 基本算术运算 要求可以进基本算术运算 要求可以进 行数据范围检查 行数据范围检查 32768 32768 3276732767 或自行设定 或自行设定 数据溢出时显示错误信息并中断程序运 数据溢出时显示错误信息并中断程序运 行 行 解答 include using namespace std class Integer private short a public Integer short n 0 a n Integer operator Integer Integer operator Integer Integer operator Integer Integer operator Integer Integer operator Integer void display cout a endl Integer Integer operator Integer x Integer temp if a x a32767 cout Data overflow endl abort temp a a x a return temp Integer Integer operator Integer x Integer temp if a x a32767 cout Data overflow endl abort temp a a x a return temp Integer Integer operator Integer x Integer temp if a x a32767 cout Data overflow endl abort temp a a x a return temp Integer Integer operator Integer x Integer temp if a x a32767 cout Data overflow endl abort temp a a x a return temp Integer Integer operator Integer x a x a return this int main Integer A 90 B 30 C cout A A display cout B B display C A B cout C A B C display C A B cout C A B C display C A B cout C A B C display C A B cout C A B C display 1111 使用虚函数编写程序求球体和圆柱体的体积及表面积 由于球体和圆柱体都可以看做 使用虚函数编写程序求球体和圆柱体的体积及表面积 由于球体和圆柱体都可以看做 由圆继承而来 所以可以把圆类由圆继承而来 所以可以把圆类 CircleCircle 作为基类 在作为基类 在 CircleCircle 类中定义一个数据成员类中定义一个数据成员 radiusradius 和两个虚函数和两个虚函数 areaarea 和和 volumevolume 由 由 CircleCircle 类派生类派生 SphereSphere 类和类和 ColumnColumn 类 在派生类类 在派生类 中对虚函数中对虚函数 areaarea 和和 volumevolume 重新定义 分别求球体和圆柱体的体积及表面积 重新定义 分别求球体和圆柱体的体积及表面积 解答 include using namespace std const double PI 3 14159265 class circle public circle double r radius r virtual double area return 0 0 virtual double volume return 0 0 protected double radius class sphere public circle public sphere double r circle r double area return 4 0 PI radius radius double volume return 4 0 PI radius radius radius 3 0 class column public circle public column double r double h circle r height h double area return 2 0 PI radius height radius double volume return PI radius radius height private double height int main circle p sphere sobj 2 p cout 球体 endl cout 体积 volume endl cout 表面积 area endl column cobj 3 5 p cout 圆柱体 endl cout 体积 volume endl cout 表面积 area endl 1212 某学校对教师每月工资的计算规定如下 固定工资 某学校对教师每月工资的计算规定如下 固定工资 课时补贴 教授的固定工资为课时补贴 教授的固定工资为 50005000 元 每个课时补贴元 每个课时补贴 5050 元 副教授的固定工资为元 副教授的固定工资为 30003000 元 每个课时补贴元 每个课时补贴 3030 元 讲师元 讲师 的固定工资为的固定工资为 20002000 元 每个课时补贴元 每个课时补贴 2020 元 定义教师抽象类 派生不同职称的教师类 元 定义教师抽象类 派生不同职称的教师类 编写程序求若干个教师的月工资 编写程序求若干个教师的月工资 解答 include using namespace std class teacher public teacher char tname int time strcpy name tname coursetime time virtual int pay 0 virtual void print 0 char getname return name int getcoursetime
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 教联体合作机制中的文化融合与创新
- 跨界合作推动区域影视产业多元化发展
- 2025二手挖掘机买卖合同
- 基于模拟演练的应急救护教育方法探讨
- 音乐与生活的探索
- 研发力量驱动创新
- 学生健康饮食指南
- 财务年度战略浅析
- 中医养生六腑
- 中医文化抗疫事迹案例分析
- 马克思主义新闻观十二讲之第七讲坚持正面宣传为主课件
- 康复科实习生入科教育
- 物理课件:《功》功和机械能PPT优质课件
- 盾构法隧道施工原理、常见难点和问题
- 《国际贸易实务》全书电子教案完整版教学设计
- 档案管理基础(第5章 档案的保管)
- JTT888-2020公共汽车类型划分及等级评定_(高清-最新)
- 应用文写作之调查报告(课堂PPT)
- 热风炉烘炉方案2014.
- 房地产营销策略外文翻译文献
- 牛津译林版新教材高中英语选择性必修一全册课文原文
评论
0/150
提交评论