虚函数之定义一个基类Shape,在此基础上派生出Rectangle和Circle再使用Rectangle类创建一个派生类Square。
定义一个基类Shape,在此基础上派生出Rectangle和Circle,二者都有getArea( )函数计算对象的面积,再使用Rectangle类创建一个派生类Square。将getArea()改造为虚函数。在主函数当中,只使用一个Shape *类型的指针p,依次指向Rectangle、Circle和Square的一个对象,并通过p->getArea()计算面积。
输入格式
Rectangle的长和宽、Circle的半径、Square的边长
输出格式
对应的面积,四舍五入到整数
输入样例
3 7 6 4
2.1 3.5 10.3 4.5
输出样例
21 113 16
7 333 20
示例:
#include <iostream>
#include <math.h>
using namespace std;
float pi = 3.1415926;
class Shape
{
protected:
float x, y;
//在矩形中x.y表示为长和宽,在圆形中都表示为半径,在正方形中都表示为边长
public:
void getxy(float X, float Y);
virtual void getArea();//虚函数
};
void Shape::getxy(float X, float Y) { x = X; y = Y; }
void Shape::getArea() { cout << round(x * y) << endl; }
//派生Rectangle
class Rectangle : public Shape
{
public:
void getlw(float l, float w);//读取长度和宽度
};
void Rectangle::getlw(float l, float w) { x = l; y = w; }
//派生Circle
class Circle : public Shape
{
public:
void getr(float r);//读取半径
virtual void getArea();
};
void Circle::getr(float r) { x = r; y = r; }
void Circle::getArea() { cout << round( pi* x * y) << endl; }//圆的面积输出
class Square : public Rectangle
{
public:
void getb(float b);//读取边长
};
void Square::getb(float b) { x = b; y = b; }
void fun(Shape* p)//定义函数参数为指向基类对象的指针
{
p->getArea();
}
int main()
{
Rectangle myjx;
Circle myyx;
Square myzfx;
float x, y, r, b;
while (cin >> x >> y >> r >> b)
{
myjx.getxy(x, y);
fun(&myjx);
myyx.getr(r);
fun(&myyx);
myzfx.getb(b);
fun(&myzfx);
}
return 0;
}
虚函数之定义一个基类Shape,在此基础上派生出Rectangle和Circle再使用Rectangle类创建一个派生类Square。相关推荐
- 定义了Circle圆形类,在此基础上派生出Cylinder圆柱体类。 Circle圆形类定义如下: class Circle { public: Circle(double r):radius(r
#include <iostream> #include <iomanip> using namespace std;#define PI 3.14class Circle { ...
- 定义一个基本的银行账户类。在基本账户类的基础上派生出1年期定期账户、2年期定期账户、3年期定期账户和5年期定期账户。定义一个n个基类指针组成的数组,随机生成n个各类派生类的对象。让每个指针指向一个派生
定义一个基本的银行账户类.在基本账户类的基础上派生出1年期定期账户.2年期定期账户.3年期定期账户和5年期定期账户.定义一个n个基类指针组成的数组,随机生成n个各类派生类的对象.让每个指针指向一个派生 ...
- 定义一个基类Shape,在此基础上派生出Rectangle和Circle,二者都有getArea( )函数计算对象的面积,再使用Rectangle类创建一个派生类Square。
输入格式 Rectangle的长和宽.Circle的半径.Square的边长 输出格式 Rectangle.Circle和Square对应的面积.四舍五入到整数 输入样例 3 7 6 4 2.1 3. ...
- 请编写一个抽象类shape,在此基础上派生出类rectangle和circle。二者都有计算对象面积的函数getarea(),计算对象的周长的函数getperim();
具体代码如下: #include <iostream> using namespace std; class shape{ public:virtual double getarea()= ...
- 虚函数 2 之虚函数的定义
1.虚函数的定义 虚函数就是在基类中被关键字 virtual 说明,并在派生类中重新定义的函数. 虚函数的作用是允许在派生类中重新定义与基类同名的函数,并且可以通过基类指针或引用来访问基类和派生类中的 ...
- 虚函数必须定义(纯虚函数除外)
1. 虚函数的声明和定义 具体关于虚函数的知识不做多讲,我在定义一个抽象类时,忘了将一个虚函数声明为 纯虚函数,又没有对其定义, 导致编译报错时报错如下: undefined reference to ...
- 一个Servlet同一时刻只有一个实例。 当多个请求发送到同一个Servlet,服务器会为每个请求创建一个新线程来处理。
Servlet是一种独立于操作系统平台和网络传输协议的服务器端的Java应用程序. 相同点: 1. 不是独立的应用程序,没有main()方法. 2. 不是由用户调用,由另一个应用程序(容器)调用 ...
- 虚函数的定义以及作用
虚函数是动态联编的基础,虚函数是成员函数,且为非static的成员函数.说明虚函数的方法如下: virtual 类型说明符 函数名(参数表) 其中,被关键字virtual说明的函数称为虚函数. 提示: ...
- C语言socket accept()函数(提取出所监听套接字的等待连接队列中第一个连接请求,创建一个新的套接字,并返回指向该套接字的文件描述符)
文章目录 名称 使用格式 功能参数描述 参数 sockfd addr addrlen 返回值 示例 man 2 文档中的accept解释 错误处理 名称 accept() 接收一个套接字中已建立的连接 ...
最新文章
- 2020年世界机器人报告
- 若依前后端分离版怎样去掉登录验证码
- 图论--边双连通V-DCC缩点
- 2020 年 Service Mesh 技术展望
- Hadoop 开源调度系统zeus(二)
- 统计学第二章--感知机
- Redis实现消息队列和订阅发布模式
- MySQL数据类型不一致_数据类型不一致导致的SQL不走索引
- 计算机拆装与网络配置技能,计算机硬件及网络计算机原理与拆装.ppt
- Struts里面的拦截器(针对的是外部调用本系统里面的接口方法)
- 跟我一起学jQuery——第二集(未完待续..)
- apache和IIS共存,服务器对外统一使用80端口
- 杭州计算机及应用不可以落户,90%的城市取消落户限制!附杭州落户超详细攻略...
- 免费在线逻辑图 + 示例
- 推断统计学-假设检验-匹配样本的假设检验的理解
- Java秒杀系统实战系列~构建SpringBoot多模块项目
- python爬微信公众号视频_python爬虫公众号所有信息,并批量下载公众号视频
- 重生之我是赏金猎人-SRC漏洞挖掘(五)-轻松GET某src soap注入
- Java多线程-线程的创建(Thread类的基本使用)
- 自测过程,开发要有足够细心和敏感度
热门文章
- Learning Python Part II 之 赋值语句(Assignments)
- 计算机财务基础知识,电脑知识:文员,财务必备的电脑基础!
- 绝地求生登录老是显示服务器繁忙,绝地求生服务器繁忙请稍后再试解决方案 专家详解...
- 【实验室乱记】基于 STM32 的采集 Adc 与 SD 卡储存
- office365邮箱的服务器名称,MailStore使用技巧——同步office 365服务器的用户数据库...
- 江西省政府及教育系统领导考察鹰潭“专递课堂”
- 笔记十 :快速建立基本界面 + Egret制作转盘效果(基于通用MVC框架)
- 华三无线控制器的配置优化
- php几种PDF导出方案比较
- siki学院案例---贪吃蛇 学习总结