/*(程序头部注释开始)
程序的版权和版本声明部分
Copyright (c) 2011, 烟台大学计算机学院学生
All rights reserved.
文件名称:  多重派生的构造函数定义
作    者:   计114-4 冯珍珍
完成日期:    2012  年  4 月  23  日
版 本 号:       ly--w
对任务及求解方法的描述部分
问题描述: *(1)先建立一个Point(点)类,包含数据成员x,y(坐标点);
(2)以Point为基类,派生出一个Circle(圆)类,增加数据成员 (半径);
(3)再以Circle类为直接基类,派生出一个Cylinder(圆柱体)类,再增加数据成员h(高)。
要求编写程序,设计出各类中基本的成员函数(包括构造函数、析构函数、修改数据成员和获取数据成员的公共接口、用于输出的重载运算符“<<”函数等),使之能用于处理以上类对象,最后求出圆格柱体的表面积、体积并输出。
(提示:此任务可以分为三个子任务分成若干步骤进行。先声明基类,再声明派生类,逐级进行,分步调试。——这种方法适用于做任何的项目)
*/
#include<iostream>
using namespace std;
#include<Cmath>
#define PI 3.1415926//定义符号常量
class Point //定义坐标点类
{
private:
double x;//横坐标
double y;//纵坐标
public:
Point(double x0,double y0) {x=x0; y=y0;}
~Point ()
{cout<<"Destructor called"<<endl;}
double get_x(){return x;} //公用基类的私有数据成员在派生类中不能访问,需要获取私有数据成员的公共接口
double get_y(){return y;}
friend ostream &operator << (ostream &, Point &);//声明运算符"<<"的重载
};
//利用坐标点类定义圆类, 其基类的数据成员表示圆的中心
class Circle: public Point
{
private:
double r;
public:
Circle(double xx,double yy,double dd): Point(xx,yy)
{
r=dd;
}
~Circle()
{
}
friend ostream &operator << (ostream &, Circle &);
double get_r(){return r;}
};
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 &,Cylinder &);
double get_h(){return h;}
double superficial_area();//表面积
double volume();//圆柱体的体积
};
ostream &operator << (ostream & output, Point & c)
{
output<<"点的横坐标为:"<<c.x<<endl;
output<<"点的纵坐标为:"<<c.y<<endl;
return output;
}
ostream &operator << (ostream & output, Circle & c)
{
output<<"圆的半径为:"<<c.get_r()<<endl;
output<<"圆的圆心为"<<"("<<c.get_x()<<","<<c.get_y()<<")"<<endl;
return output;
}
ostream &operator << (ostream & output,Cylinder & c)
{
output<<"圆柱的高为:"<<c.get_h()<<endl;
output<<"圆柱底面圆的半径为:"<<c.get_r()<<endl;
output<<"圆柱底面圆的圆心为"<<"("<<c.get_x()<<","<<c.get_y()<<")"<<endl;
return output;
}
//圆柱体的表面积
double  Cylinder::superficial_area()
{
double s=2*PI*get_r()*get_r()+2*PI*get_r()*get_h();
return s;
}
//圆柱体的体积
double  Cylinder::volume()
{
double v=PI*get_r()*get_r()*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;
system("pause");
return 0;
}
以下为运算结果:
点的横坐标为:1
点的纵坐标为:1
圆的半径为:6
圆的圆心为(1,2)
圆柱的高为:4
圆柱底面圆的半径为:3
圆柱底面圆的圆心为(1,2)
圆柱的体积为:113.097
圆柱的表面积为:131.947
请按任意键继续. . .
小结:1.在类中队派生类构造函数声明是,不包括基类构造函数名及其参数表列
2.多成派生的构造函数在定义时,只需写出其上一层派生类的构造函数即可

第十周任务三(多重派生的构造函数定义)相关推荐

  1. 2017-2018-1 20155320第十周课下作业-IPC

    2017-2018-1 20155320第十周课下作业-IPC 研究Linux下IPC机制:原理,优缺点,每种机制至少给一个示例,提交研究博客的链接 共享内存 管道 FIFO 信号 消息队列 共享内存 ...

  2. 达拉草201771010105《面向对象程序设计(java)》第十周学习总结

    达拉草201771010105<面向对象程序设计(java)>第十周学习总结 实验十  泛型程序设计技术 实验时间 2018-11-1 第一部分:理论知识        泛型:也称参数化类 ...

  3. 20145324 《信息安全系统设计基础》第十周学习总结

    20145324 <信息安全系统设计基础>第十周学习总结 学习内容总结 who •who能做什么:显示目前登入系统的用户信息 •man who •使用一下 ①who ②who am i ③ ...

  4. 20165204 第十周课下作业补做

    20165204 第十周课下测试补做 课上测试内容补做 测试2 针对下面的Student类,使用Comparator编程完成以下功能: 在测试类StudentTest中新建学生列表,包括自己和学号前后 ...

  5. java程序设计编程题_20165237 2017-2018-2 《Java程序设计》第十周考试补做及编程题...

    20165237 2017-2018-2 <Java程序设计>第十周考试补做及编程题 知识点 1.链表是由若干个称作节点的对象组成的一种数据结构,每个节点含有一个数据和下一个节点的引用 . ...

  6. 201521123038 《Java程序设计》 第十周学习总结

    201521123038 <Java程序设计> 第十周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. 2. 书面作业 本次PTA作业题 ...

  7. 20165301第十周课下补做

    第十周课下补做 知识点总结 创建一个空的链表 List<Student> list = new LinkedList<Student>(); 向链表中添加新的结点 list.a ...

  8. 2019春第十周作业

    第十周作业 本周作业头 这个作业属于哪个教程 C语言程序设计Ⅱ 这个作业要求在哪里 (https://edu.cnblogs.com/campus/zswxy/software-engineering ...

  9. 20172313 2017-2018-2 《程序设计与数据结构》第十周学习总结

    20172313 2017-2018-2 <程序设计与数据结构>第十周学习总结 教材学习内容总结 了解集合的同构和异构:同构集合保存类型全部相同的对象,异构集合可以保存各种类型的对象. 集 ...

最新文章

  1. VS2010 自定义用户控件未出现在工具箱的解决方案
  2. 009_storage.conf配置详情
  3. Codeforces Beta Round #4 (Div. 2)【完结】
  4. python安装oracle驱动_python安装oracle扩展及数据库连接方法
  5. (转)CString工作原理和常见问题分析
  6. 常用20个正则表达式
  7. 20190929每日一句
  8. SharePoint 2007 做Migration中需要注意的一些问题
  9. Python条件分支语法
  10. Java连接数据库——JDBC的快速入门
  11. C++ MFC与三菱PLC通讯
  12. 修复win7更新服务器失败,win7的windows update无法启动,手动在服务里启动提示“错误2:系统找不到指定文件...
  13. 致凯利定理(Cayley公式)
  14. 数据治理与数据安全治理的区别
  15. 成语接龙(英语单词链)
  16. 一文搞懂go并发编程设计原理
  17. 回收站清空了怎么恢复?来看看这个回收站文件恢复的官方指南
  18. 一键登录只需1秒,赶紧了解一下
  19. 硬盘低级格式化,应注意什么
  20. css下雪动画,CSS3下雪动画

热门文章

  1. ping localhost失败,提示一般故障
  2. 好系统重装助手分享win10系统强制关闭未响应程序的方法
  3. 刘笑天:Ansys workbench机械设计模块中静力分析案例
  4. 基于单片机的智能停车场管理系统的设计与实现_kaic
  5. java 获取json的值_Java如何获取JSON数据中的值
  6. 数子温度计及电压表设计【实物设计-127】
  7. 3、更改Jenkins插件地址为国内源地址
  8. 最全的2021蓝桥杯算法课《算法很美》的学习笔记总目录+真题详解
  9. 鐘明系列十三:『16阶类自然数可抹标准平方幻立方』(下)
  10. pho mysql获取最大id_php 获取数据库最大的id几种方法