河工大廊坊c++实验7

简介: 设计动物类及其派生类,并定义虚函数显示每种动物爱吃的食物。

设计动物类及其派生类,并定义虚函数显示每种动物爱吃的食物。


#include<iostream>
using namespace std;
/*
2. 设计动物类及其派生类,并定义虚函数显示每种动物爱吃的食物。 
*/
class animol{
public:
  animol(){}
  virtual void LikeFood()=0;
};
class cat:public animol{
public:
  virtual void LikeFood(){
  cout<<"小猫爱吃小鱼干"<<endl;
  }
};
class dog:public animol{
public:
  virtual void LikeFood(){
  cout<<"小狗爱吃大骨头"<<endl;
  }
};
int main(){
  animol *a1= new cat;
  a1->LikeFood();
  delete a1;
  a1=NULL;
  dog a22;
  animol *a2=&a22;
  a2->LikeFood();
  system("pause");
  return 0;
}


3.定义一个抽象类Shape,其中包含两个纯虚函数area()和volume()。再定义若干个Shape的派生类:Circle(圆)、Square(矩形)、Triangle(三角形)、Sphare(球体)、Cylinder(圆柱体)、Cube(立方体),要求在派生类中实现各种形状的面积和体积的计算,根据需求,在各派生类中提供必要的数据成员和相关成员函数。编写主函数测试类Shape及其各个派生类。


#include<iostream>
#include<cmath>
using namespace std;
/*
3. 定义一个抽象类Shape,其中包含两个纯虚函数area()和volume()。
再定义若干个Shape的派生类:
Circle(圆)、Square(矩形)、Triangle(三角形)、Sphare(球体)
、Cylinder(圆柱体)、Cube(立方体),
要求在派生类中实现各种形状的面积和体积的计算,
根据需求,在各派生类中提供必要的数据成员和相关成员函数。
编写主函数测试类Shape及其各个派生类。 
*/
class Shape{
public:
  virtual void  area()=0;
  virtual void  volume()=0;
};
class Circle:public Shape{
  protected:
    double r;
  public:
    Circle(double rb):r(rb){}
    double get_r()const{return r;}
    virtual void  area(){
      cout<<"圆的面积是"<<3.14*get_r()*get_r()<<endl;
    }
    virtual void  volume(){
      cout<<"圆的体积为 0"<<endl;
    }
};
class Square:public Shape{
  protected:
    double a;//长
    double b;//宽
  public:
    Square(double aa,double bb):a(aa),b(bb){}
    double get_a()const{return a;}
    double get_b()const{return b;}
    virtual void  area(){
      cout<<"矩形的面积是"<<get_b()*get_a()<<endl;
    }
    virtual void  volume(){
      cout<<"矩形的体积为 0"<<endl;
    }
};
class Triangle:public Shape{
  protected:
    double a;
    double b;
    double c;
    double p;
  public:
    Triangle(double aa,double bb,double cc):a(aa),b(bb),c(cc){}
    double get_a()const{return a;}
    double get_b()const{return b;}
    double get_c()const{return c;}
    virtual void  area(){
      p=(a+b+c)/2.0;
      p=p*(p-a)*(p-b)*(p-c);
      cout<<"三角形的面积是"<<sqrt(p)<<endl;
    }
    virtual void  volume(){
      cout<<"三角形的体积为 0"<<endl;
    }
};
class Sphare:public Shape{
  protected:
    double r;
  public:
    Sphare(double rb):r(rb){}
    double get_r()const{return r;}
    virtual void  area(){
      cout<<"球的面积是:"<<3.14*4* get_r()*get_r()<<endl;
    }
    virtual void  volume(){
      cout<<"球的体积为 :"<<(4*3.14*get_r()*get_r()*get_r())/4.0<<endl;
    }
};
class Cylinder:public  Shape{
protected:
  double h;
  double r;
public:
  Cylinder(double rb,double hb):r(rb),h(hb){}
  double get_r()const{return r;}
  double get_h()const{return h;}
  virtual void  area(){
      cout<<"圆柱的面积是"<<3.14*get_r()*get_r()*2+3.14*get_r()*2*get_h()<<endl;
    }
  virtual void  volume(){
      cout<<"圆柱的体积为 "<<3.14*get_r()*get_r()*get_h()<<endl;
    }
};
class Cube:public Shape{
protected:
  double h;
  double a;
  double b;
  public:
    Cube(double aa,double bb,double hh):a(aa),b(bb),h(hh){}
    double get_a()const{return a;}
    double get_b()const{return b;}
    double get_h()const{return h;}
    virtual void  area(){
      cout<<"立方体的面积是:"<<(get_b()*get_a()+get_b()*get_h()+get_h()*get_a())*2<<endl;
    }
    virtual void  volume(){
      cout<<"矩形的体积为 :"<<get_b()*get_a()*get_h()<<endl;
    }
};
int main(){
  Shape *a1=new Circle(1);
  Shape *a2=new Square(5,4);
  Shape *a3=new Triangle(3,4,5);
  Shape *a4=new Sphare(1);
  Shape *a5=new Cylinder(1,6);
  Shape *a6=new Cube(5,4,5);
  a1->area();
  a1->volume();
  a2->area();
  a2->volume();
  a3->area();
  a3->volume();
  a4->area();
  a4->volume();
  a5->area();
  a5->volume();
  a6->area();
  a6->volume();
  delete a1,a2,a3,a4,a6,a5;
  system("pause");
  return 0;
}


目录
相关文章
|
7月前
|
存储 C++
西安石油大学C++上机实验 上机六 输入输出流程序设计
西安石油大学C++上机实验 上机六 输入输出流程序设计
35 0
|
7月前
|
C++
西安石油大学C++上机实验 上机五:模板和异常处理程序设计(2 学时)
西安石油大学C++上机实验 上机五:模板和异常处理程序设计(2 学时)
26 0
|
10月前
|
C++
C++程序设计实验4
C++程序设计实验4
75 0
|
2天前
|
C++
【期末不挂科-C++考前速过系列P6】大二C++实验作业-模板(4道代码题)【解析,注释】
【期末不挂科-C++考前速过系列P6】大二C++实验作业-模板(4道代码题)【解析,注释】
【期末不挂科-C++考前速过系列P6】大二C++实验作业-模板(4道代码题)【解析,注释】
|
2天前
|
Serverless C++ 容器
【期末不挂科-C++考前速过系列P5】大二C++实验作业-多态性(3道代码题)【解析,注释】
【期末不挂科-C++考前速过系列P5】大二C++实验作业-多态性(3道代码题)【解析,注释】
|
2天前
|
C++ 芯片
【期末不挂科-C++考前速过系列P4】大二C++实验作业-继承和派生(3道代码题)【解析,注释】
【期末不挂科-C++考前速过系列P4】大二C++实验作业-继承和派生(3道代码题)【解析,注释】
|
2天前
|
存储 小程序 机器人
西安石油大学C++上机实验汇总
西安石油大学C++上机实验汇总
103 0
|
10月前
|
Web App开发 存储 C++
C++程序设计实验5
C++程序设计实验5
48 0
|
6月前
|
存储 C++
C++面向对象语言程序设计期末实验
C++面向对象语言程序设计期末实验
38 0