首页 > 代码库 > 球体类中共用抽象类
球体类中共用抽象类
【项目3】设计一个抽象类CSolid,含有两个求表面积及体积的纯虚函数。设计个派生类CCube、CBall、CCylinder,分别表示正方体、球体及圆柱体。在main()函数中,定义基类的指针p(CSolid *p;),利用p指针,输出正方体、球体及圆柱体对象的表面积及体积
程序代码
#include <iostream> using namespace std; class Shape//形状类 { public: //计算形状的面积 virtual double area() = 0; }; //形状类派生出圆类 class Circle : public Shape { public: //构造函数 Circle(double r) { this->r = r; } //计算圆的面积 virtual double area() { return 3.14 * r * r; } protected: double r;//半径 }; //形状类派生出矩形类 class Rectangle : public Shape { public: //构造函数 Rectangle(double l, double w) { length = l; wide = w; } //计算矩形的面积 virtual double area() { return length * wide; } protected: double length;//长 double wide;//宽 }; //形状类派生出三角形类 class Triangle : public Shape { public: Triangle(double length, double heigth) { this->length = length; this->height = heigth; } //计算三角形的面积 virtual double area() { return 1/2 * length * height; } protected: double length;//底边长 double height;//高 }; void main() { Circle c1(12.6),c2(4.9);//建立Circle类对象c1,c2,参数为圆半径 Rectangle r1(4.5,8.4),r2(5.0,2.5);//建立Rectangle类对象r1,r2,参数为矩形长、宽 Triangle t1(4.5,8.4),t2(3.4,2.8); //建立Triangle类对象t1,t2,参数为三角形底边长与高 Shape *pt[6]= {&c1,&c2,&r1,&r2,&t1,&t2}; //定义基类指针数组pt,使它每一个元素指向一个派生类对象 double areas=0.0; //areas为总面积 for(int i=0; i<6; i++) { areas=areas + pt[i]->area(); } cout<<"totol of all areas="<<areas<<endl; //输出总面积 system("pause"); }
执行结果
球体类中共用抽象类
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。