定义一个基类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。相关推荐

  1. 定义了Circle圆形类,在此基础上派生出Cylinder圆柱体类。 Circle圆形类定义如下: class Circle { public: Circle(double r):radius(r

    #include <iostream> #include <iomanip> using namespace std;#define PI 3.14class Circle { ...

  2. 定义一个基本的银行账户类。在基本账户类的基础上派生出1年期定期账户、2年期定期账户、3年期定期账户和5年期定期账户。定义一个n个基类指针组成的数组,随机生成n个各类派生类的对象。让每个指针指向一个派生

    定义一个基本的银行账户类.在基本账户类的基础上派生出1年期定期账户.2年期定期账户.3年期定期账户和5年期定期账户.定义一个n个基类指针组成的数组,随机生成n个各类派生类的对象.让每个指针指向一个派生 ...

  3. 定义一个基类Shape,在此基础上派生出Rectangle和Circle,二者都有getArea( )函数计算对象的面积,再使用Rectangle类创建一个派生类Square。

    输入格式 Rectangle的长和宽.Circle的半径.Square的边长 输出格式 Rectangle.Circle和Square对应的面积.四舍五入到整数 输入样例 3 7 6 4 2.1 3. ...

  4. 请编写一个抽象类shape,在此基础上派生出类rectangle和circle。二者都有计算对象面积的函数getarea(),计算对象的周长的函数getperim();

    具体代码如下: #include <iostream> using namespace std; class shape{ public:virtual double getarea()= ...

  5. 虚函数 2 之虚函数的定义

    1.虚函数的定义 虚函数就是在基类中被关键字 virtual 说明,并在派生类中重新定义的函数. 虚函数的作用是允许在派生类中重新定义与基类同名的函数,并且可以通过基类指针或引用来访问基类和派生类中的 ...

  6. 虚函数必须定义(纯虚函数除外)

    1. 虚函数的声明和定义 具体关于虚函数的知识不做多讲,我在定义一个抽象类时,忘了将一个虚函数声明为 纯虚函数,又没有对其定义, 导致编译报错时报错如下: undefined reference to ...

  7. 一个Servlet同一时刻只有一个实例。 当多个请求发送到同一个Servlet,服务器会为每个请求创建一个新线程来处理。

    Servlet是一种独立于操作系统平台和网络传输协议的服务器端的Java应用程序.  相同点:  1. 不是独立的应用程序,没有main()方法.  2. 不是由用户调用,由另一个应用程序(容器)调用 ...

  8. 虚函数的定义以及作用

    虚函数是动态联编的基础,虚函数是成员函数,且为非static的成员函数.说明虚函数的方法如下: virtual 类型说明符 函数名(参数表) 其中,被关键字virtual说明的函数称为虚函数. 提示: ...

  9. C语言socket accept()函数(提取出所监听套接字的等待连接队列中第一个连接请求,创建一个新的套接字,并返回指向该套接字的文件描述符)

    文章目录 名称 使用格式 功能参数描述 参数 sockfd addr addrlen 返回值 示例 man 2 文档中的accept解释 错误处理 名称 accept() 接收一个套接字中已建立的连接 ...

最新文章

  1. 2020年世界机器人报告
  2. 若依前后端分离版怎样去掉登录验证码
  3. 图论--边双连通V-DCC缩点
  4. 2020 年 Service Mesh 技术展望
  5. Hadoop 开源调度系统zeus(二)
  6. 统计学第二章--感知机
  7. Redis实现消息队列和订阅发布模式
  8. MySQL数据类型不一致_数据类型不一致导致的SQL不走索引
  9. 计算机拆装与网络配置技能,计算机硬件及网络计算机原理与拆装.ppt
  10. Struts里面的拦截器(针对的是外部调用本系统里面的接口方法)
  11. 跟我一起学jQuery——第二集(未完待续..)
  12. apache和IIS共存,服务器对外统一使用80端口
  13. 杭州计算机及应用不可以落户,90%的城市取消落户限制!附杭州落户超详细攻略...
  14. 免费在线逻辑图 + 示例
  15. 推断统计学-假设检验-匹配样本的假设检验的理解
  16. Java秒杀系统实战系列~构建SpringBoot多模块项目
  17. python爬微信公众号视频_python爬虫公众号所有信息,并批量下载公众号视频
  18. 重生之我是赏金猎人-SRC漏洞挖掘(五)-轻松GET某src soap注入
  19. Java多线程-线程的创建(Thread类的基本使用)
  20. 自测过程,开发要有足够细心和敏感度

热门文章

  1. Learning Python Part II 之 赋值语句(Assignments)
  2. 计算机财务基础知识,电脑知识:文员,财务必备的电脑基础!
  3. 绝地求生登录老是显示服务器繁忙,绝地求生服务器繁忙请稍后再试解决方案 专家详解...
  4. 【实验室乱记】基于 STM32 的采集 Adc 与 SD 卡储存
  5. office365邮箱的服务器名称,MailStore使用技巧——同步office 365服务器的用户数据库...
  6. 江西省政府及教育系统领导考察鹰潭“专递课堂”
  7. 笔记十 :快速建立基本界面 + Egret制作转盘效果(基于通用MVC框架)
  8. 华三无线控制器的配置优化
  9. php几种PDF导出方案比较
  10. siki学院案例---贪吃蛇 学习总结