题目描述

实现Shape层次结构。每个TwoDimensionalShape类应包括成员函数getArea,以计算二维图形的面积。每个ThreeDimensionalShape类包含成员函数getArea和getVolume,分别计算三维图形的表面积和体积。编写一个程序,使用层次结构中每个具体类的对象的Shape向量指针。程序要打印出向量元素所指的对象。同样,再将所有形状存入向量的循环中,要能判断每个图形到底属于TwoDimensionalShape还是属于ThreeDimenionalShape。如果某个图形是TwoDimensionalShape就显示其面积,如果某个图形是ThreeDimenionalShape,则显示其面积和体积。

我的代码

#include <iostream>
using namespace std;
class shape{public:virtual void show() = 0;
};
class Twodimensionalshape:public shape{public:virtual void getarea() = 0;virtual void set(double a) = 0;// virtual void set(double a=0,double b=0,double c = 0) = 0;
};
class circle:public Twodimensionalshape{double r;public:void set(double rr){r = rr;}void getarea(){cout << "面积为"<<3.14*r*r ;}void show(){cout << "半径为" << r << "的圆" << endl;}
};
class square:public Twodimensionalshape{double d;public:void set(double dd){d = dd;}void getarea(){cout << "面积为"<<d*d ;}void show(){cout << "边长为" << d << "的正方形" << endl;}
};
class tri:public Twodimensionalshape{double d,g;public:void set(double a){return;} void set(double dd,double gg){d = dd;g = gg;}void getarea(){cout << "面积为"<<d*g/2.0 ;}void show(){cout << "底为" << d <<"高为"<<g<< "的三角形" << endl;}
};
class Threedimensionalshape:public shape{public:virtual void getarea() = 0;virtual void getspace() = 0;virtual void set(double a) = 0;
};
class sphere:public Threedimensionalshape{double r;public:void set(double r){this->r = r;}void getarea(){cout << "表面积为" << 4*3.14*r*r;}void getspace(){cout << "体积为" << 4*3.14*r*r*r/3.0;}void show(){cout << "半径为" << r<< "的球体" << endl;}
};
class cube:public Threedimensionalshape{double d;public:void set(double d){this->d = d;}void getarea(){cout << "表面积为" << 6*d*d;}void getspace(){cout << "体积为" << d*d*d;}void show(){cout << "边长为"<< d << "的正方体" << endl;}
};
int main(){circle c1;c1.set(1.0);c1.getarea();c1.show();square s1;s1.set(1.0);s1.getarea();s1.show();tri t1;t1.set(3.0,4.0);t1.getarea();t1.show();sphere s2;s2.set(1.0);s2.getarea();s2.getspace();s2.show();cube c2;c2.set(2.0);c2.getarea();c2.getspace();c2.show();return 0;
}

衍生类要将set函数重写,否则会报错:[Error] cannot declare variable ‘t1’ to be of abstract type 'tri’

C++面向对象小练习:几何图形类相关推荐

  1. php rss xml,php 一个完全面向对象的RSS/XML类的简单示例

    这篇文章主要为大家详细介绍了php 一个完全面向对象的RSS/XML类的简单示例,具有一定的参考价值,可以用来参考一下. 感兴趣的小伙伴,下面一起跟随512笔记的小编罗X来看看吧. 经测试代码如下: ...

  2. 【JAVA SE】第六章 面向对象、对象和类以及封装

    第六章 面向对象.对象和类以及封装 文章目录 第六章 面向对象.对象和类以及封装 一.面向对象 1.概念 2.面向对象的三大特征 二.对象和类 1.基本概念 2.Java中的对象 3.Java 中的类 ...

  3. 基于面向对象的模拟人生游戏类

    [Python之旅]第四篇(四):基于面向对象的模拟人生游戏类 python 面向对象编程 class 类 模拟人生游戏 摘要:  需要用面向对象的思想编写一个模拟人生的小游戏,其实就目前学的知识来说 ...

  4. matlab 自定义对象,面向对象: MATLAB 的自定义类 [MATLAB]

    面向对象: MATLAB 的自定义类 [MATLAB] 这几天刚刚开始学习 MATLAB 的面向对象编程. 以前做的事情都是用 MATLAB 写一些简单的脚本或者函数, 这方面 MATLAB 成熟的函 ...

  5. 用CIL写程序:定义一个叫“慕容小匹夫”的类

    前文回顾: <用CIL写程序:你好,沃尔德> <用CIL写程序:写个函数做加法> 前言: 今天是乙未羊年的第一天,小匹夫先在这里给各位看官拜个年了.不知道各位看官是否和匹夫一样 ...

  6. day23面向对象小案例

    day23面向对象小案例 1.案例 """题目:定义一个类,产生一堆对象要求:要有一个计数器,记录一共差生了多少个对象 """ class ...

  7. 【面向对象编程】(4) 类的继承,重构父类中的方法

    各位同学好,今天和大家分享一下面向对象编程中,类的三大特征之继承.主要介绍:子类继承父类的基本方法:重写父类的类方法:重构父类的初始化方法:super() 方法.本节主要是单继承,多继承在下一节中介绍 ...

  8. 【面向对象编程】(3) 类之间的交互,依赖关系,关联关系

    各位同学好,今天和大家分享一下面向对象编程中,类之间的交互,类之间的依赖关系和关联关系.有不明白的可见前一章节:https://blog.csdn.net/dgvv4/article/details/ ...

  9. c语言面向对象编程中的类_C ++中的面向对象编程

    c语言面向对象编程中的类 Object oriented programming, OOP for short, aims to implement real world entities like ...

  10. php面向对象分页,PHP基于面向对象封装的分页类示例

    本文实例讲述了php基于面向对象封装的分页类.分享给大家供大家参考,具体如下: class page { protected $num;//每页显示条数 protected $total;//总记录数 ...

最新文章

  1. 深入理解javascript异步编程障眼法h5 web worker实现多线程
  2. IE10访问apache 2.4会奇慢的解决办法
  3. C#windows服务开发
  4. Angular NgRx MemoizedSelector的类型定义学习
  5. mysql数据库java链接,java链接MySQL数据库方法
  6. 推荐3款移动端网页开发调试神器
  7. OpenGL:glMatrixMode()
  8. JavaSelenium处理页面Table以及Table中随机位置的数据
  9. python四则运算器tkinter_Python基于Tkinter的二输入规则器(乞丐版)
  10. 2018年AI要怎么“玩”?李飞飞和李开复在达沃斯论坛上给出这几点…
  11. python查看函数消耗的内存_用sys.getsizeof查看对象占用内存数
  12. python3 numpy二维方法_Python numpy:基于坐标创建二维值数组
  13. CSS3常用功能 旋转等
  14. 数据挖掘肿瘤预测_最新成年人群癌症预测模型:基于中国健康与营养调查(CHNS)数据!...
  15. ArcGIS模型构建器计算几何的方法
  16. 如何永久关闭WPS热点,WPSCENTER,WPSNOTIFY,WPS新闻,WPS广告,WPS弹窗.
  17. 《嵌入式 - 语音识别TWen-ASR-ONE开发笔记》第2章 TWen-ASR-ONE开发环境搭建与使用
  18. hosts文件导致无法网页观看视频
  19. (转)05、Win7上openSSH的安装与配置
  20. bootstrap框架之面包屑导航(Breadcrumbs)

热门文章

  1. CAD二次开发(C#)之添加文字样式
  2. PPT幻灯片母版在制作时的应用
  3. STM32 MDK片外FLASH下载算法制作 —— 基于QSPI(W25Q32)
  4. 阿里新供应链架构解读
  5. cdn的费是多少_cdn费用是多少
  6. thinkphp mysql order_ThinkPHP中order()的使用方法
  7. redis 中pipline,mset, mget使用对比
  8. 鲍斯科机器人_芜湖鲍斯柯机器人有限公司、上海富治机械科技有限公司服务合同纠纷二审民事判决书...
  9. linux如何显示文件后缀名,如何在win7系统中显示文件后缀名、扩展名
  10. 使用词向量嵌入模型,获得近义词