/* (程序头部注释开始) * 程序的版权和版本声明部分 .* Copyright (c) 2011, 烟台大学计算机学院学生 .* All rights reserved. .* 文件名称: 第十周任务三 (1)先建立一个Point(点)类,包含数据成员x,y(坐标点); (2)以Point为基类,派生出一个Circle(圆)类,增加数据成员 (半径); (3)再以Circle类为直接基类,派生出一个Cylinder(圆柱体)类,再增加数据成员h(高)。 要求编写程序,设计出各类中基本的成员函数(包括构造函数、析构函数、修改数据成员和获取数据成员的公共接口、用于输出的重载运算符“<<”函数等),使之能用于处理以上类对象,最后求出圆格柱体的表面积、体积并输出。 (提示:此任务可以分为三个子任务分成若干步骤进行。先声明基类,再声明派生类,逐级进行,分步调试。——这种方法适用于做任何的项目) (1)第1个程序: 基类Point类及用于测试的main()函数 .* 作 者: 石丽君 .* 完成日期: 2012 年 4 月 23 日 .* 版 本 号: . .* 对任务及求解方法的描述部分 .* 输入描述: .* 问题描述: .* 程序输出: (1)先建立一个Point(点)类,包含数据成员x,y(坐标点); (2)以Point为基类,派生出一个Circle(圆)类,增加数据成员 (半径); (3)再以Circle类为直接基类,派生出一个Cylinder(圆柱体)类,再增加数据成员h(高)。 要求编写程序,设计出各类中基本的成员函数(包括构造函数、析构函数、修改数据成员和获取数据成员的公共接口、用于输出的重载运算符“<<”函数等),使之能用于处理以上类对象,最后求出圆格柱体的表面积、体积并输出。 (提示:此任务可以分为三个子任务分成若干步骤进行。先声明基类,再声明派生类,逐级进行,分步调试。——这种方法适用于做任何的项目 .* 程序头部的注释结束 .*/ #include <iostream> using namespace std; #define pi 3.1415926 class Point { private: double x,y; public: Point () {x=0;y=0;} Point (double x0,double y0) { x=x0; y=y0; } ~Point(); double getx() {return x;} double gety() {return y;} friend ostream& operator<<(ostream &output,Point c); }; class Circle:public Point { private: double r; public: Circle(double x0,double y0,double r0):Point(x0,y0), r(r0) {} friend ostream&operator<< (ostream& output,Circle c); double getr() {return r;} ~Circle(); }; class Cylinder:public Circle { private : double h; public: Cylinder(double x0,double y0,double r0,double h0): Circle(x0,y0,r0),h(h0) {} friend ostream&operator<<(ostream& output,Cylinder c); double cylinder_arear(); double cylinder_volume(); double geth() {return h;} ~Cylinder(); }; ostream& operator<<(ostream &output,Point c) { output<<'('<<c.getx()<<','<<c.gety()<<')'<<endl; return output; } ostream& operator<< (ostream& output,Circle c) { output<<"圆心坐标为:"<<"("<<c.getx()<<','<<c.gety()<<")"<<"半径为:"<<c.getr()<<endl; return output; } ostream& operator<<(ostream& output,Cylinder c) { output<<"圆心坐标为:"<<"("<<c.getx()<<','<<c.gety()<<")"<<"半径为:"<<c.getr()<<"高为:"<<c.geth()<<endl; return output; } double Cylinder::cylinder_arear() { double s; s=2*pi*getr()*getr()+2*pi*getr()*h; return s; } double Cylinder::cylinder_volume() { double v; v=pi*getr()*getr()*h; return v; } Point::~Point() { } Circle::~Circle() { } Cylinder::~Cylinder() { } int main() { Point p(1,2); cout<<"p点坐标为"<<p; Circle c(1,1,1); cout<<c; Cylinder c1(1,2,1,2); cout<<c1; cout<<"该圆柱体表面积为:"<<c1.cylinder_arear()<<endl; cout<<"该圆柱体体积为:"<<c1.cylinder_volume()<<endl; system("pause"); return 0; }
p点坐标为(1,2)
圆心坐标为:(1,1)半径为:1
圆心坐标为:(1,2)半径为:1高为:2
该圆柱体表面积为:18.8496
该圆柱体体积为:6.28319
请按任意键继续. . .
上机体会:跟老雷学会了构造函数的声明方法