C++示例(电脑组装)展现C++多态的优势以及虚函数抽象类的应用

简介: C++示例(电脑组装)展现C++多态的优势以及虚函数抽象类的应用

完整代码:

/*
 * @Author: Stylle
 * @Date: 2020-08-20 21:05:50
 * @LastEditors: Stylle
 * @LastEditTime: 2020-08-21 19:29:10
 * @FilePath: \C-_learningc:\Users\23999\Desktop\text01.cpp
 */
#include <iostream>
using namespace std;
//p 显卡的抽象类
class videoCard
{
public:
    virtual void videoWork() = 0;
};
//? amd显卡的继承 这里就体现了多态的好处如果市场加入新的品牌只需要继承到CPU类中即可
class AmdVideoCard : public videoCard
{
public:
    virtual void videoWork()
    {
        cout << "AMD的显卡开始工作了" << endl;
    }
};
//? intel显卡的继承
class IntelVideoCard : public videoCard
{
public:
    virtual void videoWork()
    {
        cout << "Intel的显卡开始工作了" << endl;
    }
};
//p cpu的抽象类
class cpu
{
public:
    virtual void cpuWork() = 0;
};
//? amd的cpu的继承 这里就体现了多态的好处如果市场加入新的品牌只需要继承到CPU类中即可
class AmdCpu : public cpu
{
public:
    virtual void cpuWork()
    {
        cout << "AMD的CPU开始工作了" << endl;
    }
};
//? intel的cpu的继承
class IntelCpu : public cpu
{
public:
    virtual void cpuWork()
    {
        cout << "Intel的CPU开始工作了" << endl;
    }
};
//p 内存条的抽象类
class memory
{
public:
    virtual void memoryWork() = 0;
};
//? amd的内存条的继承 这里就体现了多态的好处如果市场加入新的品牌只需要继承到CPU类中即可
class AmdMemory : public memory
{
public:
    virtual void memoryWork()
    {
        cout << "AMD的内存条开始工作了" << endl;
    }
};
//? intel的内存条的继承
class IntelMemory : public memory
{
public:
    virtual void memoryWork()
    {
        cout << "Intel的内存条开始工作了" << endl;
    }
};
class computer
{
public:
    //电脑组装
    computer(cpu *CPU, videoCard *VideoCard, memory *Memory)
    {
        this->myCpu = CPU;
        this->MyMemory = Memory;
        this->MyVideoCard = VideoCard;
    }
    //释放申请的机箱内存
    ~computer()
    {
        if (myCpu != NULL)
        {
            delete myCpu;
            myCpu = NULL; //防止野指针出现
        }
        if (MyMemory != NULL)
        {
            delete MyMemory;
            MyMemory = NULL;
        }
        if (MyVideoCard != NULL)
        {
            delete MyVideoCard;
            MyVideoCard = NULL;
        }
    }
    //电脑开机工作
    void work()
    {
        this->myCpu->cpuWork();
        this->MyMemory->memoryWork();
        this->MyVideoCard->videoWork();
        cout << endl;
    }
private:
    memory *MyMemory;
    videoCard *MyVideoCard;
    cpu *myCpu;
};
int main(int arcg, char **argv)
{
    cout << "组装电脑方式1" << endl;
    computer *MyComputer1 = new computer(new IntelCpu, new IntelVideoCard, new IntelMemory);
    MyComputer1->work();
    delete MyComputer1;
    cout << "组装电脑方式2" << endl;
    cpu *MyCpu = new IntelCpu;
    videoCard *MyVideo = new AmdVideoCard;
    memory *Mymemory = new IntelMemory;
    computer MyComputer2(MyCpu, MyVideo, Mymemory);
    MyComputer2.work();
    return 0;
}

电脑单件拆分(CPU):

//p cpu的抽象类基类
class cpu
{
public:
    virtual void cpuWork() = 0;
};
//? amd的cpu的继承 这里就体现了多态的好处如果市场加入新的品牌只需要继承到CPU类中即可
class AmdCpu : public cpu
{
public:
    virtual void cpuWork()
    {
        cout << "AMD的CPU开始工作了" << endl;
    }
};
//? intel的cpu的继承
class IntelCpu : public cpu
{
public:
    virtual void cpuWork()
    {
        cout << "Intel的CPU开始工作了" << endl;
    }
};

电脑单件拆分(显卡):

//p 显卡的抽象类基类
class videoCard
{
public:
    virtual void videoWork() = 0;
};
//? amd显卡的继承 这里就体现了多态的好处如果市场加入新的品牌只需要继承到CPU类中即可
class AmdVideoCard : public videoCard
{
public:
    virtual void videoWork()
    {
        cout << "AMD的显卡开始工作了" << endl;
    }
};
//? intel显卡的继承
class IntelVideoCard : public videoCard
{
public:
    virtual void videoWork()
    {
        cout << "Intel的显卡开始工作了" << endl;
    }
};

电脑单件拆分(内存条):

//p 内存条的抽象类基类
class memory
{
public:
    virtual void memoryWork() = 0;
};
//? amd的内存条的继承 这里就体现了多态的好处如果市场加入新的品牌只需要继承到CPU类中即可
class AmdMemory : public memory
{
public:
    virtual void memoryWork()
    {
        cout << "AMD的内存条开始工作了" << endl;
    }
};
//? intel的内存条的继承
class IntelMemory : public memory
{
public:
    virtual void memoryWork()
    {
        cout << "Intel的内存条开始工作了" << endl;
    }
};

总结:在电脑类中申请了三个组件的指针,所以在电脑类中析构函数中就需要释放指针内存并将其指向NULL防止野指针的出现,在这个程序中完美的体现了C++多态属性的好处,如果市场加入新的品牌只需要继承到单独的组件类中即可。

相关文章
|
6天前
|
存储 缓存 监控
用 C++ 红黑树给公司电脑监控软件的日志快速排序的方法
本文介绍基于C++红黑树算法实现公司监控电脑软件的日志高效管理,利用其自平衡特性提升日志排序、检索与动态更新效率,并结合实际场景提出优化方向,增强系统性能与稳定性。
22 4
|
4月前
|
存储 监控 算法
基于 C++ 哈希表算法实现局域网监控电脑屏幕的数据加速机制研究
企业网络安全与办公管理需求日益复杂的学术语境下,局域网监控电脑屏幕作为保障信息安全、规范员工操作的重要手段,已然成为网络安全领域的关键研究对象。其作用类似网络空间中的 “电子眼”,实时捕获每台电脑屏幕上的操作动态。然而,面对海量监控数据,实现高效数据存储与快速检索,已成为提升监控系统性能的核心挑战。本文聚焦于 C++ 语言中的哈希表算法,深入探究其如何成为局域网监控电脑屏幕数据处理的 “加速引擎”,并通过详尽的代码示例,展现其强大功能与应用价值。
107 2
|
6月前
|
存储 负载均衡 算法
基于 C++ 语言的迪杰斯特拉算法在局域网计算机管理中的应用剖析
在局域网计算机管理中,迪杰斯特拉算法用于优化网络路径、分配资源和定位故障节点,确保高效稳定的网络环境。该算法通过计算最短路径,提升数据传输速率与稳定性,实现负载均衡并快速排除故障。C++代码示例展示了其在网络模拟中的应用,为企业信息化建设提供有力支持。
176 15
|
6月前
|
运维 监控 算法
解读 C++ 助力的局域网监控电脑网络连接算法
本文探讨了使用C++语言实现局域网监控电脑中网络连接监控的算法。通过将局域网的拓扑结构建模为图(Graph)数据结构,每台电脑作为顶点,网络连接作为边,可高效管理与监控动态变化的网络连接。文章展示了基于深度优先搜索(DFS)的连通性检测算法,用于判断两节点间是否存在路径,助力故障排查与流量优化。C++的高效性能结合图算法,为保障网络秩序与信息安全提供了坚实基础,未来可进一步优化以应对无线网络等新挑战。
|
7月前
|
算法 Serverless 数据处理
从集思录可转债数据探秘:Python与C++实现的移动平均算法应用
本文探讨了如何利用移动平均算法分析集思录提供的可转债数据,帮助投资者把握价格趋势。通过Python和C++两种编程语言实现简单移动平均(SMA),展示了数据处理的具体方法。Python代码借助`pandas`库轻松计算5日SMA,而C++代码则通过高效的数据处理展示了SMA的计算过程。集思录平台提供了详尽且及时的可转债数据,助力投资者结合算法与社区讨论,做出更明智的投资决策。掌握这些工具和技术,有助于在复杂多变的金融市场中挖掘更多价值。
251 12
|
6月前
|
存储 编译器 C++
【c++】多态(多态的概念及实现、虚函数重写、纯虚函数和抽象类、虚函数表、多态的实现过程)
本文介绍了面向对象编程中的多态特性,涵盖其概念、实现条件及原理。多态指“一个接口,多种实现”,通过基类指针或引用来调用不同派生类的重写虚函数,实现运行时多态。文中详细解释了虚函数、虚函数表(vtable)、纯虚函数与抽象类的概念,并通过代码示例展示了多态的具体应用。此外,还讨论了动态绑定和静态绑定的区别,帮助读者深入理解多态机制。最后总结了多态在编程中的重要性和应用场景。 文章结构清晰,从基础到深入,适合初学者和有一定基础的开发者学习。如果你觉得内容有帮助,请点赞支持。 ❤❤❤
859 0
|
8月前
|
负载均衡 算法 安全
探秘:基于 C++ 的局域网电脑控制软件自适应指令分发算法
在现代企业信息化架构中,局域网电脑控制软件如同“指挥官”,通过自适应指令分发算法动态调整指令发送节奏与数据量,确保不同性能的终端设备高效运行。基于C++语言,利用套接字实现稳定连接和线程同步管理,结合实时状态反馈,优化指令分发策略,提升整体管控效率,保障网络稳定,助力数字化办公。
155 19
|
8月前
|
编译器 数据安全/隐私保护 C++
【C++面向对象——继承与派生】派生类的应用(头歌实践教学平台习题)【合集】
本实验旨在学习类的继承关系、不同继承方式下的访问控制及利用虚基类解决二义性问题。主要内容包括: 1. **类的继承关系基础概念**:介绍继承的定义及声明派生类的语法。 2. **不同继承方式下对基类成员的访问控制**:详细说明`public`、`private`和`protected`继承方式对基类成员的访问权限影响。 3. **利用虚基类解决二义性问题**:解释多继承中可能出现的二义性及其解决方案——虚基类。 实验任务要求从`people`类派生出`student`、`teacher`、`graduate`和`TA`类,添加特定属性并测试这些类的功能。最终通过创建教师和助教实例,验证代码
180 5
|
8月前
|
Serverless 编译器 C++
【C++面向对象——类的多态性与虚函数】计算图像面积(头歌实践教学平台习题)【合集】
本任务要求设计一个矩形类、圆形类和图形基类,计算并输出相应图形面积。相关知识点包括纯虚函数和抽象类的使用。 **目录:** - 任务描述 - 相关知识 - 纯虚函数 - 特点 - 使用场景 - 作用 - 注意事项 - 相关概念对比 - 抽象类的使用 - 定义与概念 - 使用场景 - 编程要求 - 测试说明 - 通关代码 - 测试结果 **任务概述:** 1. **图形基类(Shape)**:包含纯虚函数 `void PrintArea()`。 2. **矩形类(Rectangle)**:继承 Shape 类,重写 `Print
132 4
|
7月前
|
编译器 C++ 开发者
【C++篇】深度解析类与对象(下)
在上一篇博客中,我们学习了C++的基础类与对象概念,包括类的定义、对象的使用和构造函数的作用。在这一篇,我们将深入探讨C++类的一些重要特性,如构造函数的高级用法、类型转换、static成员、友元、内部类、匿名对象,以及对象拷贝优化等。这些内容可以帮助你更好地理解和应用面向对象编程的核心理念,提升代码的健壮性、灵活性和可维护性。