C++多态案例(三)-电脑组装

简介: 例描述:**电脑主要组成部件为 CPU(用于计算),显卡(用于显示),内存条(用于存储)将每个零件封装出抽象基类,并且提供不同的厂商生产不同的零件,例如Intel厂商和Lenovo厂商创建电脑类提供让电脑工作的函数,并且调用每个零件工作的接口测试时组装三台不同的电脑进行工作


多态案例三-电脑组装

案例描述:

电脑主要组成部件为 CPU(用于计算),显卡(用于显示),内存条(用于存储)

将每个零件封装出抽象基类,并且提供不同的厂商生产不同的零件,例如Intel厂商和Lenovo厂商

创建电脑类提供让电脑工作的函数,并且调用每个零件工作的接口

测试时组装三台不同的电脑进行工作

网络异常,图片无法展示
|

示例:

#include<iostream>

usingnamespacestd;

//抽象CPU类

classCPU

{

public:

   //抽象的计算函数

   virtualvoidcalculate() =0;

};

//抽象显卡类

classVideoCard

{

public:

   //抽象的显示函数

   virtualvoiddisplay() =0;

};

//抽象内存条类

classMemory

{

public:

   //抽象的存储函数

   virtualvoidstorage() =0;

};

//电脑类

classComputer

{

public:

   Computer(CPU*cpu, VideoCard*vc, Memory*mem)

   {

       m_cpu=cpu;

       m_vc=vc;

       m_mem=mem;

   }

   //提供工作的函数

   voidwork()

   {

       //让零件工作起来,调用接口

       m_cpu->calculate();

       m_vc->display();

       m_mem->storage();

   }

   //提供析构函数 释放3个电脑零件

   ~Computer()

   {

       //释放CPU零件

       if (m_cpu!=NULL)

       {

           deletem_cpu;

           m_cpu=NULL;

       }

       //释放显卡零件

       if (m_vc!=NULL)

       {

           deletem_vc;

           m_vc=NULL;

       }

       //释放内存条零件

       if (m_mem!=NULL)

       {

           deletem_mem;

           m_mem=NULL;

       }

   }

private:

   CPU*m_cpu; //CPU的零件指针

   VideoCard*m_vc; //显卡零件指针

   Memory*m_mem; //内存条零件指针

};

//具体厂商

//Intel厂商

classIntelCPU :publicCPU

{

public:

   virtualvoidcalculate()

   {

       cout<<"Intel的CPU开始计算了!"<<endl;

   }

};

classIntelVideoCard :publicVideoCard

{

public:

   virtualvoiddisplay()

   {

       cout<<"Intel的显卡开始显示了!"<<endl;

   }

};

classIntelMemory :publicMemory

{

public:

   virtualvoidstorage()

   {

       cout<<"Intel的内存条开始存储了!"<<endl;

   }

};

//Lenovo厂商

classLenovoCPU :publicCPU

{

public:

   virtualvoidcalculate()

   {

       cout<<"Lenovo的CPU开始计算了!"<<endl;

   }

};

classLenovoVideoCard :publicVideoCard

{

public:

   virtualvoiddisplay()

   {

       cout<<"Lenovo的显卡开始显示了!"<<endl;

   }

};

classLenovoMemory :publicMemory

{

public:

   virtualvoidstorage()

   {

       cout<<"Lenovo的内存条开始存储了!"<<endl;

   }

};

voidtest01()

{

   //第一台电脑零件

   CPU*intelCpu=newIntelCPU;

   VideoCard*intelCard=newIntelVideoCard;

   Memory*intelMem=newIntelMemory;

   cout<<"第一台电脑开始工作:"<<endl;

   //创建第一台电脑

   Computer*computer1=newComputer(intelCpu, intelCard, intelMem);

   computer1->work();

   deletecomputer1;

   cout<<"-----------------------"<<endl;

   

   cout<<"第二台电脑开始工作:"<<endl;

   //第二台电脑组装

   Computer*computer2=newComputer(newLenovoCPU, newLenovoVideoCard, newLenovoMemory);;//new出来的指针直接传到参数里。

   computer2->work();

   deletecomputer2;

   cout<<"-----------------------"<<endl;

   cout<<"第三台电脑开始工作:"<<endl;

   //第三台电脑组装

   Computer*computer3=newComputer(newLenovoCPU, newIntelVideoCard, newLenovoMemory);;

   computer3->work();

   deletecomputer3;

}


目录
相关文章
|
4月前
|
存储 监控 算法
基于 C++ 哈希表算法实现局域网监控电脑屏幕的数据加速机制研究
企业网络安全与办公管理需求日益复杂的学术语境下,局域网监控电脑屏幕作为保障信息安全、规范员工操作的重要手段,已然成为网络安全领域的关键研究对象。其作用类似网络空间中的 “电子眼”,实时捕获每台电脑屏幕上的操作动态。然而,面对海量监控数据,实现高效数据存储与快速检索,已成为提升监控系统性能的核心挑战。本文聚焦于 C++ 语言中的哈希表算法,深入探究其如何成为局域网监控电脑屏幕数据处理的 “加速引擎”,并通过详尽的代码示例,展现其强大功能与应用价值。
98 2
|
6月前
|
运维 监控 算法
解读 C++ 助力的局域网监控电脑网络连接算法
本文探讨了使用C++语言实现局域网监控电脑中网络连接监控的算法。通过将局域网的拓扑结构建模为图(Graph)数据结构,每台电脑作为顶点,网络连接作为边,可高效管理与监控动态变化的网络连接。文章展示了基于深度优先搜索(DFS)的连通性检测算法,用于判断两节点间是否存在路径,助力故障排查与流量优化。C++的高效性能结合图算法,为保障网络秩序与信息安全提供了坚实基础,未来可进一步优化以应对无线网络等新挑战。
|
3月前
|
存储 人工智能 编译器
c++--多态
上一篇文章已经介绍了c++的继承,那么这篇文章将会介绍多态。看完多态的概念,你一定会感觉脑子雾蒙蒙的,那么我们先以举一个例子,来给这朦胧大致勾勒出一个画面,在此之前,先介绍一个名词虚函数,(要注意与虚拟继承区分)重定义: 重定义(隐藏)只要求函数名相同(但要符合重载的要求,其实两者实际上就是重载);重定义下:在这种情况下,如果通过父类指针或引用调用函数,会调用父类的函数而不是子类。重定义(或称为隐藏)发生的原因是因为函数名相同但参数列表不同,导致编译器无法确定调用哪一个版本的函数。
64 0
|
7月前
|
编译器 C++
c++中的多态
c++中的多态
|
6月前
|
存储 编译器 C++
【c++】多态(多态的概念及实现、虚函数重写、纯虚函数和抽象类、虚函数表、多态的实现过程)
本文介绍了面向对象编程中的多态特性,涵盖其概念、实现条件及原理。多态指“一个接口,多种实现”,通过基类指针或引用来调用不同派生类的重写虚函数,实现运行时多态。文中详细解释了虚函数、虚函数表(vtable)、纯虚函数与抽象类的概念,并通过代码示例展示了多态的具体应用。此外,还讨论了动态绑定和静态绑定的区别,帮助读者深入理解多态机制。最后总结了多态在编程中的重要性和应用场景。 文章结构清晰,从基础到深入,适合初学者和有一定基础的开发者学习。如果你觉得内容有帮助,请点赞支持。 ❤❤❤
763 0
|
8月前
|
负载均衡 算法 安全
探秘:基于 C++ 的局域网电脑控制软件自适应指令分发算法
在现代企业信息化架构中,局域网电脑控制软件如同“指挥官”,通过自适应指令分发算法动态调整指令发送节奏与数据量,确保不同性能的终端设备高效运行。基于C++语言,利用套接字实现稳定连接和线程同步管理,结合实时状态反馈,优化指令分发策略,提升整体管控效率,保障网络稳定,助力数字化办公。
143 19
|
10月前
|
存储 编译器 数据安全/隐私保护
【C++】多态
多态是面向对象编程中的重要特性,允许通过基类引用调用派生类的具体方法,实现代码的灵活性和扩展性。其核心机制包括虚函数、动态绑定及继承。通过声明虚函数并让派生类重写这些函数,可以在运行时决定具体调用哪个版本的方法。此外,多态还涉及虚函数表(vtable)的使用,其中存储了虚函数的指针,确保调用正确的实现。为了防止资源泄露,基类的析构函数应声明为虚函数。多态的底层实现涉及对象内部的虚函数表指针,指向特定于类的虚函数表,支持动态方法解析。
108 1
|
11月前
|
编译器 C++
C++入门12——详解多态1
C++入门12——详解多态1
120 2
C++入门12——详解多态1
|
11月前
|
C++
C++入门13——详解多态2
C++入门13——详解多态2
159 1
|
12月前
|
编译器 C++
【C++核心】指针和引用案例详解
这篇文章详细讲解了C++中指针和引用的概念、使用场景和操作技巧,包括指针的定义、指针与数组、指针与函数的关系,以及引用的基本使用、注意事项和作为函数参数和返回值的用法。
184 3