资源描述
实验八 派生与继承-虚函数
一、实验目的
1、学习定义和使用类的继承关系,定义派生类。
2、熟悉不同继承方式下对基类成员的访问控制。
3、学习利用虚基类解决二义性问题。
4、学习使用虚函数实现动态多态性。
二、实验任务
1、定义一个shape类如下,
//shape.h
#ifndef SHAPE
#define SHAPE
#include <iostream>
using namespace std;
const double PI=3.14159;
class shape
{
virtual double area()=0;
virtual double circumference()=0; //周长
};
#endif
在此基础上派生有矩形和圆形两种图形,求它们各自的面积和周长。设计各个图形求面积和周长的方法。在此基础上派生出长方体、圆柱体,并求出它们的体积和表面积。
已各个类的头文件,要求实现各个类
//rectangle.h 矩形类
#ifndef RECTANGLE
#define RECTANGLE
#include "shape.h"
class rectangle:public shape//矩形
{
private:
double length;
double width;
public:
rectangle(double leng,double wid);
double area();
virtual double get_length();
virtual double get_width();
double circumference();//周长
void display();
};
#endif
//circle.h 圆类
#ifndef CIRCLE
#define CIRCLE
#include "shape.h"
class circle:public shape//圆形
{
private:
double radius;
public:
circle(double r);
double area();
virtual double get_radius();
double circumference();//周长
void display();
};
#endif
//cylinder.h 圆柱体类
#ifndef CYLINDER
#define CYLINDER
#include "circle.h"
class cylinder:public circle//圆柱体
{
private:
double height;
public:
cylinder(double r,double hei);
double get_height();
double volume();
double facearea();
void display();
};
#endif
//cuboid.h 长方体类
#ifndef CUBOID
#define CUBOID
#include "rectangle.h"
class cuboid:public rectangle//长方体
{
private:
double height;
public:
cuboid(double leng,double wid,double hei);
double volume();
double facearea();
virtual double get_height();
void display();
};
#endif
////main
#include <iostream>
#include "shape.h"
#include "circle.h"
#include "rectangle.h"
#include "cylinder.h"
#include "cuboid.h"
using namespace std;
int main()
{
cuboid cu1(2,3,4);
cu1.display ();
cout<<"当前对象的表面积:"<<cu1.facearea ()<<endl;
cout<<"当前对象的体积:"<<cu1.volume ()<<endl;
cylinder cy1(2,3);
cy1.display ();
cout<<"当前对象的表面积:"<<cy1.facearea ()<<endl;
cout<<"当前对象的体积:"<<cy1.volume ()<<endl;
return 0;
}
展开阅读全文