西安交大C++程序设计第十章作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
西安交通大学实验报告
课程__计算机程序设计__实验名称__多态性__第 1 页共 44 页
系别____ ______ 实验日期 2014 年 5 月 31 日
专业班级__ ____组别_____________ 实验报告日期 2014 年 5 月 31 日
姓名___ _____学号_ _ 报告退发 ( 订正、重做 )
同组人_________________________________ 教师审批签字
一、实验目的
理解掌握多态的使用方法,学会用虚函数。
二、实验内容
(一)第一题:定义一个类Base,该类含有虚函数display,然后定义它的两个派生类FirstB和SecondB,这两个派生类均含有公有成员函数display,在主程序中,定义指向基类Base的指针变量ptr,并分别定义Base、FirstB、Second的对象b1、f1、s1,让ptr分别指向b1、f1、s1的起始地址,然后指向执行这些对象的成员函数display。
1.源程序代码:
#include
using namespace std;
class Base
{
public:
virtual void display()
{
cout<<"sound!sound!sound!";
}
};
class FirstB:public Base
{
public:
void virtual display()
{
cout<<"miao!miao!miao!";
}
};
class SecondB:public Base
{
public:
void virtual display()
{
cout<<"wang!wang!wang!";
}
};
int main()
{
Base *ptr;
Base b1;
FirstB f1;
SecondB s1;
cout<<"指向基类Base:\t";
ptr=&b1;
ptr->display();
cout<<"\n指向派生类FirstBase:\t";
ptr=&f1;
ptr->display();
cout<<"\n指向派生类SecondB:\t";
ptr=&s1;
ptr->display();
cout< return 0; } 2.实验结果: (二)第二题:扩充例10-5,从中派生一个正方形类和圆柱体类,写一个测试程序,输出正方形的面积和圆柱体的体积。 1.源程序代码: 验结果: (三)第三题:扩充实例编程中的日期类,为Date增加一个成员函数,可以判断日期是否为系统当前日期。从键盘输入你的生日,如果今天是你的生日则显示:“Harry Birthday!”否则显示“还有**天是你的生日”或者“你的生日已经过去了** 天,距离明年生日还有**天”。 1.源程序代码: < cout<<"Please input your birthday:"; int a,b; cin>>a>>b; Date birthday(a,b); (birthday); cout< return 0; } 2.实验结果: 四、第四题:完成上一章实验第5题红颜色的函数功能: 5、采用继承方式定义一个三层生日蛋糕类,不论基类还是派生类都至少包含 5 个函数:构造函数、设置数据成员函数、求蛋糕体积、运算符 > 重载函数、输出生日祝词与蛋糕形状函数。并编写主函数测试各成员函数。继承方式如下:首先定义圆柱体形状蛋糕类,只有 3 个数据成员,半径、高、生日祝词。然后派生出圆柱体 _ 方柱体蛋糕类,即在圆柱体形状上增加方柱体形状。假定方柱体的正方形面积小于圆柱体的圆形面积,注意方柱体的高与正方形的边长不一定相等。再用圆柱体 _ 方柱体蛋糕类派生出圆柱体 _ 方柱体 _ 菱形体蛋糕类,即在方柱体形状上增加菱形柱体形状。假定菱形柱体的菱形面积小于方柱体的正方形面积。提示:①?运算符 > 重载指两个蛋糕对象的体积大小。?②基类和派生类数据成员不能定义为 public 。③设置数据成员函数、求蛋糕体积、求蛋糕表面积函数、输出生日祝词与蛋糕形状函数均为同名重载函数,例如分别采用函数名为 init() 、 volume() 、 area() 、 output() 。程序运行参考图如下:(红颜色的功能下一章实验完成) 1.源程序代码: 验结果: 五、第五题:(必做题)定义一个一元二次方程类,通过继承方式定义一元 三次方程类,再继承定义一元四次方程类。类中至少包含构造函数、求根函数、运算符 + 重载函数、运算符 - 重载函数、运算符==重载函数、输出方程的函数等6 个函数,并编写主函数测试各成员函数。提示:①两个一元三次方程对应相加仍然是一个一元三次方程;②求根方法采用迭代方法,迭代公式为:Xn+1=Xn -F(Xn)/F ’ (Xn) ,结束迭代的条件|F(Xn+1)|<10-7 与|Xn+1-Xn|<10-7 同时成立;③一元三次方程的一般形式如下:F(X)=AX3+BX2+CX+D=0 。输出方程格式为: A*X^3+B*X^2+C*X+D=0 ;④两个一元三次方程对应相加和对应相减仍然是一元三次方程。⑤假定类中的方程系数能求解出实根。不考虑方程存在虚根和无根的情况。求根函数应该有一个参数,该参数指明迭代初值。例如方程 2X3-4X2+3x-6 = 0 在附近的根。又例如方程X3+12X2+48X+64=0 在附近的根。例如方程X4-10X3+35X2-50x+24=0在附近的