<pre class="plain" name="code">/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称: C++第十周【任务3】
* 作 者: 鲍增凯
* 完成日期: 2012 年 5 月 14 日
* 版 本 号: 10-3-1
* 对任务及求解方法的描述部分
* 输入描述: 建立point类,以此为基类,派生出圆类和圆柱类
* 问题描述:在下面一段类的定义中,需要填充的函数由注释内容给出了功能。
* 程序输出:
* 程序头部的注释结束
*/
//1先建立一个Point点类,包含数据成员x,y(坐标点);
//2以point为基类,派生出一个circle类,增加数据成员r(半径);
//3自已circle为直接基类,派生出一个cylinder(圆柱体类),在增加数据成员h(高)。
//要求:编写程序,设计出各类中基笨的成员函数(包括构造函数,析构函数,修改数据成员和获取数据成员的公共接口,用于输出的重载运算符“<<”函数等)
//是只能用于处理以上类对象,最后求出圆柱体的表面积和体积并输出。
//分析:圆柱体多的表面积=2*pi*r*r+2pr*h;
//圆柱体的体积:pi*r*r*h;
#include<iostream.h>
#define pi 3.1415926
class Point
{
public:
Point(double a, double b):x(a),y(b){}
double getx();
double gety();
~Point(){}
protected:
double x;
double y;
};
class circle:public Point
{
public:
circle(double a,double b,double c):Point(a,b)
{
r=c;
}
double getS();
double getC();
~circle(){}
protected:
double r;
};
class ctylinder:public circle
{
public:
ctylinder(double a,double b,double c,double h):circle(a,b,c)
{
height=h;
}
double getbiaoianji();
double gettiji();
friend ostream& operator<<(ostream&,ctylinder& );
~ctylinder(){}
private:
double height;
};
double Point:: getx()
{
return x;
}
double Point::gety()
{
return y;
}
double circle::getS()
{
return pi*r*r;
}
double circle::getC()
{
return 2*pi*r;
}
double ctylinder::getbiaoianji()
{
return(pi*r*r*2+2*pi*r*height) ;
}
double ctylinder::gettiji()
{
return(pi*r*r*height);
}
ostream& operator<<(ostream& output,ctylinder &c)
{
output<<"横坐标为:"<<c.x<<"纵坐标为:"<<c.y<<"半径为:"<<c.r<<"高为:"<<c.height;
return output;
}
int main()
{
ctylinder c(1,2,3,4);
cout<<c<<endl;
cout<<"面积为:"<<c.getbiaoianji()<<endl;
cout<<"体积为:"<<c.gettiji()<<endl;
return 0;
}
![](https://img-my.csdn.net/uploads/201205/14/1336991515_9829.jpg)