c++继承习题
更新时间:2024-03-20 02:10:01 阅读量: 综合文库 文档下载
- c继承子类和父类推荐度:
- 相关推荐
一、实验目的:
(1) 学习定义和使用类的继承关系,定义派生类。 (2) 熟悉不同继承方式下对基类成员的访问控制。 (3) 掌握继承的其他有关知识
二、实验题目(此部分必做): 1.题目1
a)定义一个基类Animal,有私有整型成员变量age,构造其派生类dog,在其成员函数SetAge(int n)中直接给age赋值,看看会有什么问题,把age改为公有成员变量,还会有问题吗?编程试试看。
b)定义一个基类BaseClass,有整型成员变量Number ,构造其派生类DerivedClass,观察构造函数和析构函数的执行情况。
c)定义一个车(vehicle)基类,具有MaxSpeed、Weight等成员变量,Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类。自行车类有高度(height)等属性,汽车类有座位数(SeatNum)等属性。从bicycle和motorcar派生出摩托车(motorcycle)类,在继承过程中,注意把vehicle设置为虚基类。如果不把vehicle设置为虚基类,会有什么问题?编程试试看。
实验提示:
(1) 编写程序定义基类Animal,成员变量age定义为私有的。构造派生类dog,在其成员函数SetAge(int n)中直接对age赋值时,会出现类似以下的错误提示: error C2248:’age’:cannot access private member declared in class ‘Animal’ error C2248:’age’:cannot access private member declared in class ‘Animal’ 把age改为公有成员变量后重新编译就可以了。程序名为:lab7_1.cpp
(2)编写程序定义一个基类BassClass,构造其派生类DerivedClass,在构造函数和析构函数中用cout输出提示信息,观察构造函数和析构函数的执行情况。程序名为:lab7_2.cpp。用debug功能跟踪程序的执行过程,观察基类和派生类的构造函数和析构函数的执行情况。
(4) 写程序定义一个车(vehicle)基类,由此派生出自行车(bicycle)类、汽车类(motorcar)类,注意把vehicle派生为虚基类。再从bicycle和motorcar派生出摩托车(motorcycle)类,在main()函数中测试这个类。程序名为:lab7_3.cpp。 编译成功后,把vehicle设置为非虚基类,再编译一次,此时系统报错,无法编译成功。这是因为若不把vehicle设置为虚基类,会出现二义性错误,程序不能成功编译。
2、定义一个大学生类student,函数私有数据成员:姓名、学号、校名,并为它定义带参数的构造函数、参数带缺省值的构造函数和输出数据成员值的print()公有成员函数,另定义研究生类,它以公有继承方式派生于类student,新增加“研究方向、导师名”两个私有数据成员,并定义带参数的构造函数和输出研究生数据的print()公有成员函数。在main()函数中定义基类和派生类对象,对类进行测试。
3、建立普通的基类building,用于存储一座楼房的层数、房间数和它的总平方面积。建立有派生类house,继承building,并存储卧室和浴室的数量。另建立派生类office,继承building,存储工作人员和电话的数目。设计程序,并测试上述三个类。 基类定义参考如下:
#include
int layernumber; int housenum; float sumarea; public:
Building();
Building(int m,int n,float s) { cout<<\ layernumber=m;housenum=n;sumarea=s; }
void print() { cout<<\ cout<<\ cout<<\ } };
参考测试程序: void main() {
Building build1(18,360,8000); build1.print();
House house(6,24,2880,4,2); house.print();
Office office(18,360,8000,4,4); office.print(); }
程序执行输出结果如下: base constructor called. this is a 18-story building there are 360 houses And total area is 8000 base constructor called. House constructer called. this is a 6-story building there are 24 houses And total area is 2880 bedroomnum=4 bathroomnum=2
base constructor called.
Office Constructor called. this is a 18-story building there are 360 houses And total area is 8000 stuffnum=4 telnum=4
4、题目2:从下图可以看出一个立方体Box可以视为是在一个矩形Rectangle的相互正交的长length和宽width的基础上增加一维与length和width相互正交的高height而生成的。Box的体积可以视为是由length和width确定的矩形面积沿正交轴在[0, height]区间进行积分获得的;Box的面积可以视为是由length和width确定的矩形周长沿正交轴在[0, height]区间进行积分的结果+两倍的矩形面积获得的。
Rectangle width length Box height width length
要求:
1.定义具有继承关系的矩形类Rectangle和立方体类Box。两个类中除了具有共同的 属性length和width,还具有相同的接口(公有成员函数)Area(计算矩形面积 或立方体面积),Perimeter(计算矩形周长或立方体周长),Diagonal(计算矩形 对角线或立方体对角线的长度),GetLength(获取长度属性),GetWidth(获取宽 度属性),SetLength(设置长度属性)和SetWidth(设置宽度属性)。除此之外, 立方体类Box还需要增加height属性和接口函数Volume(计算立方体的体积), GetHeight(获取高度属性)和SetHeight(设置高度属性)。
2. 在主函数main()中对矩形类Rectangle和立方体类Box进行如下测试: ①通过键盘输入长、宽和高,并以所输入的值创建3个Rectangle对象和1个Box 对象。
②通过上述对象分别计算并格式显示3个矩形和1个立方体的各项形态信息。矩 形的形态信息包括:长、宽、面积、周长和对角线;立方体的形态信息包括:长、 宽、高、体积、面积、周长和对角线。
③通过键盘输入新的长、宽和高,由并以所输入的值修改已创建的3个Rectangle 对象和1个Box对象的相应属性。
④重新分别计算并格式显示3个矩形和1个立方体的各项形态信息。 3. 要求编写编程文档,文档内容包括:
① 绘制Rectangle和Box类图,以及它们之间的静态关联图。 ② Rectangle和Box类的定义描述。
提示:立方体的周长定义为各棱长的和,立方体的对角线定义为立方体中不在同一矩形表面的两个顶点间的连线(矩形的对角线是不在同一边上的两个顶点间的连线)。
三、课外选作题
字典Dictionary是一个有由单词组成的集合。该集合中存放这些单词的结构可以有多
种,其中链表是一种较为简单和高效的结构。一个由存放单词的结点wordNode组成 的单词链表WordList与字典Dictionary之间的差异仅在于Dictionary中不允许有重 复单词的结点。其中存放单词的结点wordNode是构成字典的最基本数据单位,对结 点对象的访问是十分频繁的,因此可以将单词结点wordNode定义为如下的结构: struct wordNode { stringname; // 单词名。 Type type; // 单词类型包括名词noun、及物动词vt、不及物动词vi、
//形容词adj、副词adv、介词prep、代词pron、连词conj、 //数词num和感叹词inter),一个单词可以是单一类型或// 多类型。
MeanList *mean [10]; // 单词的全部含义描述。每个单词的每个词性都允许有多
//个含义描述。
wordNode *next; // 指向下一个单词结点。 wordNode() // 构造函数
{
for(int i = 0; i < 10; i++)
mean[i] = NULL; next = NULL; } ~wordNode() // 析构函数
{
for(int i = 0; i < 10; i++)
if(mean[i]) delete mean[i];
} };
wordNode的词名成员name是string类对象,该类的定义和功能已经在5.3题进行了详细说明(以下相同)。
wordNode的词性成员type的类型wordType可以定义为一个联合(union),便于 对单词类型的高效访问。该联合和联合中成员类型可以定义如下: struct sortType { unsigned noun: 1; // 名词类型 unsigned vt: 1; // 及物动词类型 unsigned vi: 1; // 不及物动词类型 unsigned adj: 1; // 形容词类型 unsigned adv: 1; // 副词类型 unsigned prep: 1; // 介词类型 unsigned pron: 1; // 代词类型 unsigned conj: 1; // 连接词类型 unsigned num: 1; // 数词类型 unsigned inter: 1; // 感叹词类型
正在阅读:
c++继承习题03-20
《第八次》公开课教案11-24
高科技孵化器大楼物业服务方案101p.04-27
子女出资以父母名义购房改房引起的产权纠纷09-29
2018-英雄事迹读后感600字八篇-范文word版(6页)12-29
《看画识字真有趣》教学设计01-07
2016年北师大小学一年级数学上教案全册(表格式) - 图文01-19
横沟市镇立新校车公司宣传语06-04
浅析当代中国婚姻家庭问题02-01
2016-2017品德与社会考试题03-02
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- c++
- 习题
- 继承
- 中国水射器产业市场运行及产业发展趋势研究报告(目录)
- 缓解学生心理压力促进学生心理健康
- 部分行业常用软件介绍
- 回风巷回风上山掘进探巷安全技术措施
- ppt演讲稿开场白范文
- 江苏公务员考试公共基础知识-公务员法习题及答案
- 某公路改建工程项目“首件工程认可制”实施细则 精品
- 三峡大学乄水利与环境学院2013年4月份复试拟录取名单
- 中国管道流量计行业市场调查研究报告(目录) - 图文
- 中级质量工程师第一节供应商选择与质量控制章节练习(2014-08-26)
- 2014年5月二级心理咨询师真题和答案
- 浦东新区外籍人口集聚与国际社区建设
- 心理咨询流派比较
- Oracle 数据库的克隆方法
- 2017电大管理哲学网上作业答案
- 中国工商银行的主要领导人
- 管理会计在我国企业中的应用
- 建筑电气工程中存在的质量问题与对策
- 2011年全省深入开展创先争优活动工作要点1
- 旅游环境保护学