第6章的6.14

作业内容:

  建立一个抽象类container(含两个纯虚函数),再由它派生出正方体类,球体类,圆柱体类。使用基类指针访问虚函数。

个人体会:

  我还是觉得求表面积和体积的函数定义成 void型比较好写,毕竟如果定义成有返回值类型double的话,后面的主程序还要另外生成一个空间来存放结果,略麻烦。


编写代码:

# include <iostream>
# include <string>
using namespace std;
class container{
public:
container(double radius1)
{
radius=radius1;
}
virtual double surface_area()=0;
virtual double volume()=0;
protected:
double radius;
};
class cube:public container{
public:
cube(double radius1):container(radius1)
{}
double surface_area()
{
cout<<"正方体的表面积为";
return (radius*radius*6);
}
     double volume()
{
cout<<"正方体的体积为";
return (radius*radius*radius);
}
};
class sphere:public container{
public:
sphere(double radius1):container(radius1)
{}
     double surface_area()
{
cout<<"球体的表面积为";
return (radius*radius*4*3.14);
}
     double volume()
{
cout<<"球体的体积为";
return (radius*radius*radius*3.14*4/3);
}
};
class cylinder:public container{
public:
cylinder(double radius1,double h1):container(radius1)
{
h=h1;
}
double surface_area()
{
cout<<"圆柱体的表面积为";
return (radius*3.14*2*h+3.14*radius*radius*2);
}
     double volume()
{
cout<<"圆柱体的体积为";
return (radius*radius*3.14*h);
}
private:
double h;
};
int main()
{
container *pc;
cube c(6.0);
sphere s(5.0);
cylinder y(5.0,6.0);
pc=&c;
double c1=pc->surface_area();
    cout<<c1<<endl;
double c2=pc->volume();
cout<<c2<<endl;
cout<<"*****************"<<endl;
pc=&s;
double s1=pc->surface_area();
cout<<s1<<endl;
double s2=pc->volume();
cout<<s2<<endl;
    cout<<"*****************"<<endl;
pc=&y;
    double y1=pc->surface_area();
cout<<y1<<endl;
double y2=pc->volume();
cout<<y2<<endl;
return 0;
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值