您的位置:首页 > 其它

第六章作业

2015-06-28 23:11 253 查看
【6.13】定义基类base,其数据成员为高h,定义成员函数disp为虚函数。然后再由High派生出长方体类Cuboid与圆柱体类Cylinder。并在两个派生类中定义成员函数disp为虚函数。在主函数中,用基类base定义指针变量pc,然后用指针pc动态调用基类与派生类中虚函数disp,显示长方体和圆柱体的体积。

#include<iostream>
using namespace std;
class Base{                //基类
public:
Base()
{ }
Base(double h1)
{ h=h1;}
virtual void show()        //虚函数show
{ cout<<"长方体和圆柱体的高度都是:"<<h<<endl;
}
protected:
double h;               //高度
};
class Cuboid:public Base{   //长方体类
public:
Cuboid(double l=0,double w=0,double h=0):Base(h)
{ len=l, wid=w;
}
virtual  void show()               //虚函数disp
{ cout<<"长方体:"<<endl;
cout<<"  长度="<<len<<endl;
cout<<"  宽度="<<wid<<endl;
cout<<"  高度="<<h<<endl;
cout<<"  长方体的体积="<<len*wid*h<<endl;
}
private:
double len,wid;           //长度和宽度
};
class Cylinder:public Base {  //圆柱体类
public:
Cylinder(double r1=0,double h1=0):Base(h1)
{ r=r1;}
virtual  void show()               //虚函数disp
{
cout<<"圆柱体:"<<endl;
cout<<"  半径="<<r<<endl;
cout<<"  高度="<<h<<endl;
cout<<"  圆柱体的体积="<<r*r*3.14*h<<endl;
}
private:
double r;                 //半径
};
int main()
{ Base *pc;         //定义基类指针
Cuboid cu(5,7,8);  //定义长方体类对象
Cylinder cy(5,4);  //定义圆柱体类对象
pc=&cu;
pc->show();       //计算长方体体积
pc=&cy;
pc->show();       //计算圆柱体体积
system("pause");
return 0;
}




【6.14】给出下面的抽象基类container:

    class container{                       //声明抽象类container

protected:

        double radius;

public:

container(double radius1);         //抽象类container的构造函数

virtual double surface_area()=0;   //纯虚函数surface_area  

virtual double volume()=0;         //纯虚函数volume

};

要求建立3个继承container的派生类cube、sphere与cylinder,让每一个派生类都包含虚函数surface_area()和volume(),分别用来计算正方体、球体和圆柱体的表面积及体积。要求写出主程序,应用C++的多态性,分别计算边长为6.0的正方体、半径为5.0的球体,以及半径为5.0和高为6.0的圆柱体的表面积和体积。

#include<iostream>
using namespace std;
class container{ //声明抽象类container
protected:
double radius;
public:
container(double radius1); //声明抽象类container的构造函数
virtual double surface_area()=0; //声明纯虚函数surface_area
virtual double volume()=0; //声明纯虚函数volume
};
container::container(double radius1) //定义抽象类container的构造函数
{ radius=radius1;
}
class cube:public container //声明一个正方体派生类cube
{ public:
cube(double radius1):container(radius1)
{ }
double surface_area() //定义虚函数surface_area
{ return 6*radius*radius;
}
double volume() //定义虚函数volume
{ return radius*radius*radius;
}
};
class sphere:public container //声明一个球体派生类sphere
{ public:
sphere(double radius1):container(radius1)
{ };
double surface_area() //纯虚函数surface_area
{ return 4*3.1416*radius*radius;
}
double volume() //纯虚函数volume
{ return 3.1416*radius*radius*radius*4/3;
}
};
class cylinder: public container //声明一个圆柱体派生类cylinder
{ double height;
public:
cylinder(double radius1,double height1):container(radius1)
{ height=height1;
}
double surface_area() //定义虚函数surface_area
{ return 2*3.1416*radius*(radius+height);
}
double volume() //定义虚函数volume
{ return 3.1416*radius*radius*height;
}
};
int main()
{ container *ptr; //定义抽象类Shape的对象指针ptr
cube obj1(5.0); //定义正方体的类对象obj1
sphere obj2(5.0); //定义球体的类对象obj2
cylinder obj3(5.0,6.0); //定义圆柱体的类对象obj2
ptr=&obj1; //指针ptr指向正方体类对象obj1
cout<<"这个正方体的表面积是:"<<ptr->surface_area()<<endl; //求正方体的表面积
cout<<"这个正方体的体积是:"<<ptr->volume()<<endl<<endl; //求正方体的的体积
ptr=&obj2; //指针ptr指向球体的类对象obj2
cout<<"这个球体表面积是:"<<ptr->surface_area()<<endl; //求球体的表面积
cout<<"这个球体的体积是:"<<ptr->volume()<<endl<<endl; //求球体的的体积
ptr=&obj3; //指针ptr指向圆柱体类的对象obj3
cout<<"这个圆柱体的表面积是:"<<ptr->surface_area()<<endl; //求圆柱体的表面积
cout<<"这个圆柱体的体积是:"<<ptr->volume()<<endl; //求圆柱体的的体积
system("pause");
return 0;
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: