下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第8章 虚函数与多态性8.1 选择题1在C+中,要实现动态联编,必须使用( d )调用虚函数。(a) 类名 (b) 派生类指针 (c) 对象名 (d) 基类指针2下列函数中,可以作为虚函数的是( c,d )。(a) 普通函数(b) 构造函数 (c) 成员函数 (d) 析构函数3在派生类中,重载一个虚函数时,要求函数名、参数的个数、参数的类型、参数的顺序和函数的返回值( b )。(a) 不同(b) 相同 (c) 相容 (d) 部分相同4下面函数原型声明中,( b )声明了fun为纯虚函数。(a) void fun()=0; (b)virtual void fun()=0;(c) virtual
2、void fun(); (d)virtual void fun() ;5若一个类中含有纯虚函数,则该类称为( d )。(a) 基类 (b) 纯基类 (c) 派生类 (d)抽象类6假设 Aclass为抽象类,下列声明( a,c,d )是错误的。(a) Aclass fun( int ) ; (b)Aclass * p ;(c) int fun( Aclass ) ; (d)Aclass Obj ;7下面描述中,正确的是( b,d )。(a) 虚函数是没有实现的函数 (b) 纯虚函数的实现在派生类定义(c) 抽象类是只有纯虚函数的类 (d) 抽象类指针可以指向不同的派生类 8.2 阅读下列程序,写
3、出执行结果1#include 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 ;void main() Iclass obj( 2, 4, 10 ); Bclas
4、s p1 = obj; cout p1.fun() endl; Bclass & p2 = obj ; cout p2.fun() endl; cout p2.Bclass : fun() endl; Bclass *p3 = &obj; cout fun() endl;答案: 0 5 0 52#include 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 pub
5、lic:void fun() coutx = xty = x * x = x*xendl; ;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 = &obj2; pb - getxy( 100, 20 );pb - fun();答案: x = 10 y = x*x = 100 x = 100 y = 20 y = x / y = 58.3编程题1使用虚函数编写程序求球体和圆柱体的体积及表面积。由于球体和圆柱体都可以看
6、作由圆继承而来,所以可以定义圆类circle作为基类。在circle类中定义一个数据成员radius和两个虚函数area()和volume()。由circle类派生sphere类和column类。在派生类中对虚函数area()和volume()重新定义,分别求球体和圆柱体的体积及表面积。解答:#include const double PI=3.;class circle public: circle(double r) radius = r; virtual double area() return 0.0; virtual double volume() return 0.0; prote
7、cted: 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
8、() return 2.0 * PI * radius * ( height + radius ); double volume() return PI * radius * radius * height; private: double height;void main() circle *p; sphere sobj(2); p = &sobj; cout 球体: endl; cout 体积 = volume() endl; cout 表面积 = area() endl; column cobj( 3,5 ); p = &cobj; cout 圆柱体: endl; cout 体积 = volume() endl; cout 表面积 = area() endl;2某学校对教师每月工资的计算规定如下:固定工资+课时补贴。教授的固定工资为5000元,每个课时补贴50元。副教授的固定工资为3000元,每个课时补贴30元。讲师的固定工资为2000元,每个课时补贴20元。定义教师抽象类,派生不同职称的教师类,编写程序求若干个教
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 第4章 电磁波 单元滚动训练(含答案)
- 煤矿机电队长安全岗位责任制培训
- 工程分包工程安全管理标准培训课件
- 2026年广东女子职业技术学院单招职业技能测试题库附答案详解(轻巧夺冠)
- 检修部制粉班班长安全责任制培训课件
- 2026年广西工业职业技术学院单招职业适应性考试题库带答案详解(培优a卷)
- 2026年岳阳现代服务职业学院单招综合素质考试题库含答案详解(突破训练)
- 2026年广东茂名农林科技职业学院单招职业倾向性考试题库带答案详解(典型题)
- 2026年山西省阳泉市单招职业适应性考试题库带答案详解(巩固)
- 2026年广东科学技术职业学院单招职业适应性考试题库及答案详解一套
- TCPA 005-2024 星级品质 婴儿纸尿裤
- 桩基承载力优化设计研究
- DJ公主岗位职责
- 多联机安装全过程经典技术指导手册
- 龙虎山正一日诵早晚课
- 排球基础理论 【核心知识精讲精析】 高一上学期体育与健康人教版必修第一册
- 医院课件:《规范医疗服务收费行为培训》
- YY/T 1836-2021呼吸道病毒多重核酸检测试剂盒
- GB/T 32291-2015高压超高压安全阀离线校验与评定
- 煤矿掘进顶板管理
- 邹申写作教程Units-课件
评论
0/150
提交评论