设计动物类及其派生类,并定义虚函数显示每种动物爱吃的食物。
#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;
}
- 定义一个抽象类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;
}