第十周实验指导--任务3--先建立一个Point(点)类,再派生出一个Circle(圆)类,再派生出一个Cylinder(圆柱体)类
2012-04-21 13:35
423 查看
/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:定义Complex类中的<<和>>运算符的重载,实现输入和输出,改造原程序中对运算结果显示方式,使程序读起来更自然。
* 作 者: 雷恒鑫
* 完成日期: 2012 年 04 月 21 日
* 版 本 号: V1.0
* 对任务及求解方法的描述部分
* 输入描述:
* 问题描述:
* 程序输出:
* 程序头部的注释结束
*/
运行结果:
![](http://my.csdn.net/uploads/201204/21/1334986670_4862.JPG)
下面的程序能够看出析构函数的执行过程:
运行结果:
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:定义Complex类中的<<和>>运算符的重载,实现输入和输出,改造原程序中对运算结果显示方式,使程序读起来更自然。
* 作 者: 雷恒鑫
* 完成日期: 2012 年 04 月 21 日
* 版 本 号: V1.0
* 对任务及求解方法的描述部分
* 输入描述:
* 问题描述:
* 程序输出:
* 程序头部的注释结束
*/
#include<iostream.h> #include<Cmath> #define pi 3.1415926 class Point //定义坐标点类 { public: double x,y; //点的横坐标和纵坐标 Point(){x=0;y=0;} Point(double x0,double y0) {x=x0; y=y0;} ~Point () { cout<<"析构函数执行完毕(Destructor function performs finished)"<<endl; } double get_x(){return x;} double get_y(){return y;} friend ostream &operator << (ostream & output, Point & c); }; class Circle: public Point //利用坐标点类定义圆类, 其基类的数据成员表示圆的中心 { private: double d; public: Circle(double xx,double yy,double dd): Point(xx,yy) ,d(dd){}//构造函数 ~Circle() { } friend ostream &operator << (ostream & output, Circle & c); double get_d(){return d;} }; class Cylinder: public Circle { private: double h; public: Cylinder(double xx,double yy,double dd,double hh): Circle (xx,yy,dd),h(hh){} //构造函数 ~Cylinder() { } friend ostream &operator << (ostream & output,Cylinder & c); double get_h(){return h;} double superficial_area(); //表面积 double volume(); //体积 }; ostream &operator << (ostream & output, Point & c) { output<<"点的横坐标为:"<<c.x<<" "<<"点的纵坐标为:"<<c.y<<endl; return output; } ostream &operator << (ostream & output, Circle & c) { output<<"圆的半径为:"<<c.get_d()<<"圆的圆心为"<<"("<<c.get_x()<<","<<c.get_y()<<")"<<endl; return output; } ostream &operator << (ostream & output,Cylinder & c) { output<<"圆的高为:"<<c.get_h()<<"圆的半径为:"<<c.get_d()<<"圆的圆心为"<<"("<<c.get_x()<<","<<c.get_y()<<")"<<endl; return output; } double Cylinder::superficial_area() //表面积 { double s; s=2*pi*get_d()*get_d()+2*pi*get_d()*get_h(); return s; } double Cylinder::volume() //体积 { double v; v=pi*get_d()*get_d()*get_h(); return v; } int main() { Point p(1,1); cout<<p; Circle ci(1,2,6); cout<<ci; Cylinder cy(1,2,3,4); cout<<cy; cout<<"圆柱的体积为:"<<cy.volume ()<<endl; cout<<"圆柱的表面积为:"<<cy.superficial_area ()<<endl; return 0; }
运行结果:
下面的程序能够看出析构函数的执行过程:
#include<iostream> using namespace std; #include<Cmath> #define pi 3.1415926 class Point //定义坐标点类 { public: double x,y; //点的横坐标和纵坐标 Point(){x=0;y=0;} Point(double x0,double y0) {x=x0; y=y0;} ~Point () { cout<<"Point析构函数执行完毕(Destructor function performs finished)"<<endl; } double get_x(){return x;} double get_y(){return y;} friend ostream &operator << (ostream & output, Point & c); }; class Circle: public Point //利用坐标点类定义圆类, 其基类的数据成员表示圆的中心 { private: double d; public: Circle(double xx,double yy,double dd): Point(xx,yy) ,d(dd){}//构造函数 ~Circle() { cout<<"Circle析构函数执行完毕(Destructor function performs finished)"<<endl; } friend ostream &operator << (ostream & output, Circle & c); double get_d(){return d;} }; class Cylinder: public Circle { private: double h; public: Cylinder(double xx,double yy,double dd,double hh): Circle (xx,yy,dd),h(hh){} //构造函数 ~Cylinder() { cout<<"Cylinder析构函数执行完毕(Destructor function performs finished)"<<endl; } friend ostream &operator << (ostream & output,Cylinder & c); double get_h(){return h;} double superficial_area(); //表面积 double volume(); //体积 }; ostream &operator << (ostream & output, Point & c) { output<<"点的横坐标为:"<<c.x<<" "<<"点的纵坐标为:"<<c.y<<endl; return output; } ostream &operator << (ostream & output, Circle & c) { output<<"圆的半径为:"<<c.get_d()<<"圆的圆心为"<<"("<<c.get_x()<<","<<c.get_y()<<")"<<endl; return output; } ostream &operator << (ostream & output,Cylinder & c) { output<<"圆的高为:"<<c.get_h()<<"圆的半径为:"<<c.get_d()<<"圆的圆心为"<<"("<<c.get_x()<<","<<c.get_y()<<")"<<endl; return output; } double Cylinder::superficial_area() //表面积 { double s; s=2*pi*get_d()*get_d()+2*pi*get_d()*get_h(); return s; } double Cylinder::volume() //体积 { double v; v=pi*get_d()*get_d()*get_h(); return v; } void f() { Point p(1,1); cout<<p; Circle ci(1,2,6); cout<<ci; Cylinder cy(1,2,3,4); cout<<cy; cout<<"圆柱的体积为:"<<cy.volume ()<<endl; cout<<"圆柱的表面积为:"<<cy.superficial_area ()<<endl; } int main() { f(); system("pause"); return 0; }
运行结果:
相关文章推荐
- 第十周C++【任务3】建立一个Point(点)类,派生出一个Circle(圆)类,派生出一个Cylinder(圆柱体)类
- 第10周任务3(先建立一个Point(点)类,派生出一个Circle(圆)类,再派生出一个Cylinder(圆柱体)类)
- 第十周实验指导--任务2--定义一个名为CPerson的类,并在此基础上派生出CEmployee类
- 再以Circle类为直接基类,派生出一个Cylinder(圆柱体)类,再增加数据成员h(高),,以及求圆柱表面积的成员函数area和求圆柱体积的成员函数volume,实现需要的成员函数,并设计main
- 第十周实验报告任务3 先建一个Point类
- 11周1--3 以Circle类为直接基类,派生出一个Cylinder(圆柱体)类
- 定义Point(点)类,由Point类派生出Circle(圆)类,再由Circle类派生出Cylinder(圆柱体)类。将类的定义部分分别作为3个头文件
- 第十周实验指导--任务1--由坐标点类派生出直线类--继承与派生
- C#--第四周实验--任务3--定义一个人员类Cperson,在此基础上派生出学生类CStudent和教师类CTeacher,实现输入输出功能的成员函数。
- 第十二周实验指导--任务三--设计一个在下面一段类的定义中,自行车类的虚基类为车辆类,机动车类的虚基类也为车辆类,摩托车类的基类为自行车类和机动车类,类之间均为公有继承
- 第九周实验报告任务4 建立一个二维数组类Douary,使该类中有以下数据成员、成员函数及友员函数,完成矩阵的输入、输出、加、减、相等判断等操作。
- 以Point为基类,派生出一个Circle(圆)类,增加数据成员r(半径),以及求面积的成员函数area,实现其他需要的成员函数,设计main函数完成测试
- C#--第11周实验--任务1(建立Windows窗体应用程序)--设计一个窗体--单击按钮时,在标签上显示当前系统时间
- C#--第11周实验--任务1(建立Windows窗体应用程序)--设计一个窗体--单击按钮时,在标签上显示当前系统时间 .
- 建立类cylinder,cylinder的构造函数被传递了两个double值,分别表示圆柱体的半径和高度。用类cylinder计算圆柱体的体积,并存储在一个double变量中。在类cylinder中包
- 第十周实验报告任务2 定义一个名为CPerson的类。
- 11周1--2以Point为基类,派生出一个Circle(圆)类,增加数据成员r(半径),以及求面积的成员函数area,实现其他需要的成员函数,设计main函数完成测试;
- 第六周实验指导--任务四--设计一个三角形类,能够输入三角形的三个顶点,求出其面积、周长。
- 《C++第十三周实验报告4-1》---设计一个抽象类CSolid,含有两个求表面积及体积的纯虚函数。 设计个派生类CCube、CBall、CCylinder,分别表示正方体、球体及圆柱体。
- 用c++建立一个形状类Shape作为基类,派生出圆类Circle和矩形类Rectangle,求出面积并获取相关信息。