第十三周项目三-形状类族中的纯虚函数
/*
*Copyright(c)2016,烟台大学计算机与控制工程学院
*All rights reserved
*文件名称:123.cpp
*作 者:王蕊
*完成日期:2016年6月1日
*版 本 号:v1.0
*
*问题描述:写一个程序,定义抽象基类的Shape,由它派生出3个派生类,Circle(圆形)、Rectangie(矩形)、Triangle(三角形)。用如下的main()函数,求出定义的几个几何体的面积和
*/
#include <iostream>
using namespace std;
class Shape //定义抽象基类Shape
{
public:
virtual double area() const =0; //纯虚函数,写const是因为本函数只求值不改变数据成员,故用const保护一下,与虚函数无关
};
class Circle:public Shape //定义Circle类
{
public:
Circle(double r):radius(r) {} //结构函数
virtual double area() const //基类中的同名纯虚函数用了const,这儿也必须写,以示同一函数,否则认为没有实现纯虚函数,仍为抽象类,不能定义对象——类的实例
{
return 3.14159*radius*radius; //定义虚函数
};
protected:
double radius; //半径
};
class Rectangle:public Shape //定义Rectangle类
{
public:
Rectangle(double w,double h):width(w),height(h) {} //结构函数
virtual double area() const //基类中的同名纯虚函数用了const,这儿也必须写,以示同一函数,否则认为没有实现纯虚函数,仍为抽象类,不能定义对象——类的实例
{
return width*height; //定义虚函数
}
protected:
double width,height; //宽与高
};
class Triangle:public Shape
{
public:
Triangle(double w,double h):width(w),height(h) {} //结构函数
virtual double area() const
{
return 0.5*width*height; //定义虚函数
}
protected:
double width,height; //宽与高
};
int main()
{
Circle c1(12.6),c2(4.9);//建立Circle类对象c1,c2,参数为圆半径
Rectangle r1(4.5,8.4),r2(5.0,2.5);//建立Rectangle类对象r1,r2,参数为矩形长、宽
Triangle t1(4.5,8.4),t2(3.4,2.8); //建立Triangle类对象t1,t2,参数为三角形底边长与高
Shape *pt[6]= {&c1,&c2,&r1,&r2,&t1,&t2}; //定义基类指针数组pt,使它每一个元素指向一个派生类对象
double areas=0.0; //areas为总面积
for(int i=0; i<6; i++)
{
areas=areas + pt[i]->area();
}
cout<<"totol of all areas="<<areas<<endl; //输出总面积
return 0;
}
运行结果:
第十三周项目三-形状类族中的纯虚函数相关推荐
- 第十三周项目四-立体类族共有的抽象类
/* *Copyright(c)2016,烟台大学计算机与控制工程学院 *All rights reserved *文件名称:123.cpp *作 者:王蕊 *完成日期:2016年6月1日 *版 本 ...
- 第十三周项目4—立体类族共有的抽象类
/* *Copyright(c) 2016.烟台大学计算机与控制工程学院 *ALL rights reserved. *文件名称:test.cpp *作者:杨驰 *完成日期:2016年5月26 *问题 ...
- 第13周项目4 立体类族公有的抽象类
/**copyright(c) 2016,烟台大学计算机与控制工程学院*All rights reserved*文件名称:test.cpp*作者:李硕*版本:Code::Blocks**问题描述:设计 ...
- 第十三周 项目3车辆类(继承)
/* * Copyright (c) 2011, 烟台大学计算机学院 * All rights reserved. * 作 者:王静 * 完成日期:2013 年 6 月 2 日 * 版 本 号:v1. ...
- 第五周项目三-时间类(2)
/* *Copyright(c)2016,烟台大学计算机与控制工程学院 *All rights reserved *文件名称:123.cpp *作 者:王蕊 *完成日期:2016年3月29日 *版 本 ...
- 第十三周项目一-分数类中的运算符重载
/**Copyright(c)2016,烟台大学计算机与控制工程学院*All rights reserved*文件名称:123.cpp*作 者:王蕊*完成日期:2016年5月25日*版 本 号:v1. ...
- 第十二周项目三-数组类运算的实现
/**Copyright(c)2016,烟台大学计算机与控制工程学院*All rights reserved*文件名称:123.cpp*作 者:王蕊*完成日期:2016年5月24日*版 本 号:v1. ...
- 第五周项目三-时间类(1)
<p> </p><div>/* *Copyright(c)2016,烟台大学计算机与控制工程学院 *All rights reserved *文件名称:123.cp ...
- 形状类族的中的纯虚函数
/* * 程序的版权和版本声明部分: * Copyright (c) 2013, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作 者:任子仪 ...
最新文章
- linux系统下网卡故障解决
- R语言使用gt包和gtExtras包优雅地、漂亮地显示表格数据:使用gt包可视化表格数据,使其易于阅读和理解、使用gtExtras包添加一个图,显示表中某一列中的数字、并为类型数据添加图像符号标签
- feign调用session丢失解决方案
- Exception in thread main java.lang.NullPointerException
- 异常通知(After Throwing Advice)
- 德佑地产房产经纪人区域总监访谈:掌门的态度
- 【linux】linux shell if 多条件 并行 字符串判断
- azure java sdk_用于 Azure 媒体服务的 Java SDK 使用入门 | Microsoft Docs
- 词根词缀spers/spher/spir/spond等词根衍生的单词
- HTTP协议-python接口自动化话测试(无涯)
- Win32_Keyboard 键盘 参数说明
- java导出excel报表_java生成excel报表文件示例
- 从投资人发现“新大陆”,看“产融星城”为何成?
- python在手机使用webdriver.chromns_Selenium +Chrome浏览器如何模拟手机操作
- 2007你“值”多少钱(薪水,薪酬,工资,待遇,年薪,月薪)
- 解决QQ2009不能发临时会话信息
- matlab 矩阵取众数,时间序列分析的matlab统计量函数1
- windows10系统如何将系统语言由汉语改为英语
- 如何恢复音乐文件数据呢
- ExpRe[7] Ubuntu[0] U盘启动盘制作,重装系统