IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 嵌入式Linux C++练习2——继承和派生 -> 正文阅读

[嵌入式]嵌入式Linux C++练习2——继承和派生

使用类的继承和派生实现对矩形,正方形,三角形,圆形的定义,并实现对长方体,正方体,球体和圆锥的表面积、体积的计算。

#include <iostream>
#include <cmath>
using namespace std;

const float pi = 3.14;

class Line //线
{
public:
    Line(float len) : m_len(len) {}
    virtual float area() = 0;   //面积
    virtual float volume() = 0; //体积

protected:
    float m_len;
};



class Tri : public Line //三角形
{
public:
    Tri(float len, float height) : Line(len)
    {
        m_height = height;
    }

    float area()
    {
        return m_height * m_len / 2;
    }

protected:
    float m_height;
};

class Cir : public Line //圆形
{
public:
    Cir(float len) : Line(len)
    {
        m_radius = len;
    }

    float area()
    {
        return m_radius * m_radius * pi;
    }

protected:
    float m_radius;
};

class Rec : public Line //长方形
//在全部实现基类纯虚函数前,仍然是个抽象类
{
public:
    Rec(float len, float width) : Line(len)
    {
        m_width = width;
    }

    float area()
    {
        return m_width * m_len;
    }

protected:
    float m_width;
};



class Cuboid : public Rec //长方体
{
public:
    Cuboid(float len, float width, float height) : Rec(len, width)
    {
        m_height = height;
    }

    float area()
    {
        return 2 * (m_len * m_width + m_len * m_height + m_width * m_height);
    }

    float volume()
    {
        return m_width * m_height * m_len;
    }

protected:
    float m_height;
};

class Cube : public Cuboid //正方体
{
public:
    Cube(float len) : Cuboid(len, len, len) {}
};

class Cone : public Tri //圆锥
{
public:
    Cone(float radius, float height) : Tri(radius, height)
    {
        m_radius = radius;
        m_height = height;
    }

    float area()
    {
        return (pi * sqrt(m_radius * m_radius + m_height * m_height) * m_radius + pi * m_radius * m_radius);
    }

    float volume()
    {
        return pi * m_radius * m_radius * m_height / 3;
    }

protected:
    float m_radius;
    float m_height;
};

class Sph : public Line //球体
{
public:
    Sph(float len) : Line(len)
    {
        m_radius = len;
    }

    float area()
    {
        return 4 * pi * m_radius * m_radius;
    }

    float volume()
    {
        return 4 / 3 * pi * m_radius * m_radius * m_radius;
    }

protected:
    float m_radius;
};

int main()
{
    Line *p = new Cuboid(1, 2, 3);
    cout << "长方体的表面积是" << p->area() << endl;
    cout << "长方体的体积是" << p->volume() << endl;
    delete p;

    p = new Cube(3);
    cout << "正方体的表面积是" << p->area() << endl;
    cout << "正方体的体积是" << p->volume() << endl;
    delete p;

    p = new Cone(3, 4);
    cout << "圆锥的表面积是" << p->area() << endl;
    cout << "圆锥的体积是" << p->volume() << endl;
    delete p;

    p = new Sph(3);
    cout << "球体的表面积是" << p->area() << endl;
    cout << "球体的体积是" << p->volume() << endl;
    delete p;

    return 0;
}
  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-08-06 15:58:39  更:2021-08-06 15:58:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/27 10:23:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计