/* Copyright (c) 2016* All rights reserved 烟台大学计算机与控制工程学院 * 文件名称:3.cpp * 作者:刘丽 * 完成日期:2016年 4 月 28日 * 版本号: v1.0 * *【项目 - 点-圆-圆柱类族的设计】 按以下的提示,由基类的设计和测试开始,逐渐地完成各个类的设计,求出圆格柱体的表面积、体积并输出并且完成要求的计算任务: (1)先建立一个Point(点)类,包含数据成员x,y(坐标点),实现需要的成员函数,并设计main函数完成测试; (2)以Point为基类,派生出一个Circle(圆)类,增加数据成员r(半径),以及求面积的成员函数area,实现其他需要的成员函数,设计main函数完成测试; (3)再以Circle类为直接基类,派生出一个Cylinder(圆柱体)类,再增加数据成员h(高),,以及求圆柱表面积的成员函数area和求圆柱体积的成员函数volume,实现需要的成员函数,并设计main函数完成测试。 要求编写程序,设计出各类中“需要的成员函数”,包括构造函数、析构函数、修改数据成员和获取数据成员的公共接口、用于输出的重载运算符“<<”函数等。 (提示:此任务可以分为三个子任务分成若干步骤进行。先声明基类,再声明派生类,逐级进行,分步调试。——这种方法适用于做任何的项目) */ #include<iostream> #include<cstring> const double PI=3.14; using namespace std; class Point { protected: int x; int y; public: Point (int x,int y):x(x),y(y){}; }; Point ::Point(const Point &a) { x=a.x; y=a.y; } class Circle:public Point { protected: int r; public: Circle(int x,int y,int r):Point(x,y),r(r){}; double getArea(); }; double Circle::getArea() { return PI*r*r; } class Cylinder:public Circle { protected: int h; public: Cylinder(int x,int y,int r,int h):Circle(x,y,r),h(h){}; double getCArea(); double getV(); }; double Cylinder::getCArea() { return PI*r*r*2+2*PI*r*h; } double Cylinder::getV() { return PI*r*r*h; } int main() { Cylinder c1(0,0,2,5); cout <<"底面积为:"<<c1.getArea()<<endl; cout <<"表面积为:"<<c1.getCArea()<<endl; cout <<"体积为:"<<c1.getV()<<endl; return 0; }
时间: 2024-10-27 18:34:18