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