《c++》多态案例一.电脑组装

这篇具有很好参考价值的文章主要介绍了《c++》多态案例一.电脑组装。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一.代码展示

#include <iostream>
using namespace std;
class CPU {
public:
	//抽象计算函数
	virtual void calculate() = 0;

};

class CVideoCard {
public:
	//抽象显示函数
	virtual void display() = 0;

};
class Memory {
public:
	//抽象存储函数
	virtual void storage() = 0;

};

class Computer {
public:
	
	Computer(CPU* cpu, CVideoCard* vc, Memory* mem) {
	  m_cpu = cpu;
	  m_vc = vc;
	  m_mem = mem;
	}
	//提供工作函数
	void doWork() {
		m_cpu->calculate();
		m_vc->display();
		m_mem->storage();
	}

	//析构函数
	~Computer() {
		if (m_cpu != NULL) {
			delete m_cpu;
			m_cpu = NULL;
	    }
	if (m_vc != NULL) {
			delete m_vc;
			m_vc = NULL;
	    }
	if (m_mem != NULL) {
		delete m_mem;
		m_mem = NULL;
	}
	
	}


private:
	CPU* m_cpu;//CPU的零件指针
	CVideoCard* m_vc;//显卡的零件指针
	Memory* m_mem;//内存条的零件指针


};

class IntelCPU : public CPU 
{
virtual void calculate() 
{
	cout << "Intel CPU 正在计算" << endl;
}
};

class IntelVideoCard : public CVideoCard 
{
virtual void display() 
{
	cout << "Intel 显卡正在显示" << endl;
}

};

class IntelMemory : public Memory 
{
virtual void storage() 
{
	cout << "Intel 内存条正在存储" << endl;
}

};


class AmdCPU : public CPU 
{
virtual void calculate() 
{
	cout << "Amd CPU 正在计算" << endl;
}
};

class AmdVideoCard : public CVideoCard {
virtual void display() {
	cout << "Amd 显卡正在显示" << endl;
}
};


class AmdMemory : public Memory {
	virtual void storage() {
		cout << "Amd 内存条正在存储" << endl;
	}
};


void test01() {
	CPU* Intelcpu = new IntelCPU();
	CVideoCard* Intelvc = new IntelVideoCard();
	Memory* Intelmem = new IntelMemory();

	//组装第一台电脑
	
	Computer* c1 = new Computer(Intelcpu, Intelvc, Intelmem);
	c1->doWork();
	delete c1;

	cout << "----------------------" << endl;
	//组装第二台电脑
	CPU* Amdcpu = new AmdCPU();
	CVideoCard* Amdvc = new AmdVideoCard();
	Memory* Amdmem = new AmdMemory();

	Computer* c2 = new Computer(Amdcpu, Amdvc, Amdmem);
	c2->doWork();
	delete c2;


}

int main() {
	test01();
	return 0;
}

二.代码解析

2.1构建电脑各零件类

class CPU {
public:
	//抽象计算函数
	virtual void calculate() = 0;

};

class CVideoCard {
public:
	//抽象显示函数
	virtual void display() = 0;

};
class Memory {
public:
	//抽象存储函数
	virtual void storage() = 0;

};

在这里用了组装电脑中比较重要的零件分别是CPU(处理器)Cvideocard(显卡)Memory(内存条)分别创建了3个类。

在每个类中都用到纯虚函数方便子类后续进行继承

纯虚函数是为了实现接口或抽象基类而设计的,强制派生类必须重写该函数。

2.2创建电脑类

class Computer {
public:
	
	Computer(CPU* cpu, CVideoCard* vc, Memory* mem) {
	  m_cpu = cpu;
	  m_vc = vc;
	  m_mem = mem;
	}
	//提供工作函数
	void doWork() {
		m_cpu->calculate();
		m_vc->display();
		m_mem->storage();
	}

	//析构函数
	~Computer() {
		if (m_cpu != NULL) {
			delete m_cpu;
			m_cpu = NULL;
	    }
	if (m_vc != NULL) {
			delete m_vc;
			m_vc = NULL;
	    }
	if (m_mem != NULL) {
		delete m_mem;
		m_mem = NULL;
	}
	
	}


private:
	CPU* m_cpu;//CPU的零件指针
	CVideoCard* m_vc;//显卡的零件指针
	Memory* m_mem;//内存条的零件指针


};

1.创建变量

首先要在Computer类中创建3个零件的指针去接收传入的零件指针

private:
	CPU* m_cpu;//CPU的零件指针
	CVideoCard* m_vc;//显卡的零件指针
	Memory* m_mem;//内存条的零件指针

这里之所以用private(保护权限)是因为编程习惯,通常在一个类中存放变量的权限用private(保护权限)防止随意被更改。

2.创建构造函数

Computer(CPU* cpu, CVideoCard* vc, Memory* mem) {
	  m_cpu = cpu;
	  m_vc = vc;
	  m_mem = mem;
	}

创建一个构造函数用来接受传入的CPU(处理器)、VideoCard(显卡) 以及 Memory(硬盘)的参数。

3.创建工作函数

//提供工作函数
	void doWork() {
		m_cpu->calculate();
		m_vc->display();
		m_mem->storage();
	}

创建一个工作函数(doWork),该函数主要功能是提示每个零件是否正常工作。在该函数中要调用每个零件的功能,列如在Cpu类中我们创建了一个calculate(计算)函数,那么我们就要在doWork函数中调用该功能。

class CPU {
public:
	//抽象计算函数
	virtual void calculate() = 0;

};

4.创建析构函数

	//析构函数
	~Computer() {
		if (m_cpu != NULL) {
			delete m_cpu;
			m_cpu = NULL;
	    }
	if (m_vc != NULL) {
			delete m_vc;
			m_vc = NULL;
	    }
	if (m_mem != NULL) {
		delete m_mem;
		m_mem = NULL;
	}
	
	}

首先要知道为什么要创建析构函数,因为我们创建了3个指针变量,而指针变量一般是存放在内存里的堆区里,在堆区中系统不会自动释放该内存,这就导致会很容易出现内存泄漏的情况,所以我要进行手动的释放内存。

2.3创建各品牌的零件


class IntelCPU : public CPU 
{
virtual void calculate() 
{
	cout << "Intel CPU 正在计算" << endl;
}
};

class IntelVideoCard : public CVideoCard 
{
virtual void display() 
{
	cout << "Intel 显卡正在显示" << endl;
}

};

class IntelMemory : public Memory 
{
virtual void storage() 
{
	cout << "Intel 内存条正在存储" << endl;
}

};


class AmdCPU : public CPU 
{
virtual void calculate() 
{
	cout << "Amd CPU 正在计算" << endl;
}
};

class AmdVideoCard : public CVideoCard {
virtual void display() {
	cout << "Amd 显卡正在显示" << endl;
}
};


class AmdMemory : public Memory {
	virtual void storage() {
		cout << "Amd 内存条正在存储" << endl;
	}
};

1.Inter系列的零件


class IntelCPU : public CPU 
{
virtual void calculate() 
{
	cout << "Intel CPU 正在计算" << endl;
}
};

例如我们要创建一个inter系列的cpu,那首先创建一个类名为 InrelCPU

因为他是CPU类中的一个子类,所以要继承CPU类中的属性,也就是

class intelCPU : public CPU

因为在CPU类中我们创建了一个关于calculate(计算)的虚函数


class IntelCPU : public CPU 
{
virtual void calculate() 
{
	cout << "Intel CPU 正在计算" << endl;
}
};

因此子类也要使用这个虚函数,并给这个虚函数重载一下,所以代码为:
virtual void calculate() 
{
    cout << "Intel CPU 正在计算" << endl;
}


2.其他零件创建方式跟1相差不大,这里不再赘述

2.4创建一个主机


void test01() {
	CPU* Intelcpu = new IntelCPU();
	CVideoCard* Intelvc = new IntelVideoCard();
	Memory* Intelmem = new IntelMemory();

	//组装第一台电脑
	
	Computer* c1 = new Computer(Intelcpu, Intelvc, Intelmem);
	c1->doWork();
	delete c1;

	cout << "----------------------" << endl;
	//组装第二台电脑
	CPU* Amdcpu = new AmdCPU();
	CVideoCard* Amdvc = new AmdVideoCard();
	Memory* Amdmem = new AmdMemory();

	Computer* c2 = new Computer(Amdcpu, Amdvc, Amdmem);
	c2->doWork();
	delete c2;


}

1.创建一个函数

如代码所示,首先创建一个test01函数用来测试。

2.创建各品牌零件

	CPU* Intelcpu = new IntelCPU();
	CVideoCard* Intelvc = new IntelVideoCard();
	Memory* Intelmem = new IntelMemory();

在这段代码中,CPU* Intelcpu = new IntelCPU();   
CVideoCard* Intelvc = new IntelVideoCard();
以及Memory* Intelmem = new IntelMemory();
这些语句分别创建了 IntelCPUIntelVideoCardIntelMemory 类的对象,并将它们的指针赋值给了 IntelcpuIntelvcIntelmem 指针变量。

这些对象的创建和赋值是为了模拟组装一台计算机所需的不同零件,其中 IntelCPU 代表 Intel 品牌的 CPU,IntelVideoCard 代表 Intel 品牌的显卡,IntelMemory 代表 Intel 品牌的内存条。

类似地,后续代码中的 AmdCPUAmdVideoCardAmdMemory 分别代表 AMD 品牌的 CPU、显卡和内存条。通过这种方式,你可以轻松地组装出不同品牌的计算机,并测试它们的工作状态。

3.组装一个电脑


	Computer* c1 = new Computer(Intelcpu, Intelvc, Intelmem);
	c1->doWork();
	delete c1;

创建一个电脑类的对象名为 c1  将上文创建好的3个品牌零件赋值给c1。

赋值完成后调用c1中的doWork函数来检查电脑各零件是否在工作状态中。

最后创建完成电脑后记得释放内存文章来源地址https://www.toymoban.com/news/detail-846477.html

delete c1;

到了这里,关于《c++》多态案例一.电脑组装的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 游戏组装电脑配置推荐2023 游戏组装电脑配置推荐2023

    CPU Intel 酷睿i5 10400F 1 ¥880 主板 铭瑄 MS-挑战者 B560M 1 ¥599 内存 玖合32GB(16G×2) DDR4 3200 1 ¥998 固态硬盘 金百达KP260(1TB) 1 ¥419 显卡 Intel Arc A750 8G 1 ¥1919 机箱 航嘉暗影猎手5 1 ¥85 电源 游戏悍将RPO700 1 ¥239 游戏组装电脑怎么搭配更合适这些点很重要 http://www.adiannao.cn/du CPU Intel 酷

    2024年02月10日
    浏览(38)
  • 办公组装机电脑配置清单2023 办公组装电脑配置推荐2023

    CPU Intel 奔腾金牌 G6400 1 ¥499 主板 技嘉H510M H 1 ¥579 内存 金士顿骇客神条FURY 8GB DDR4 2666(HX426C15FB/8) 1 ¥235 固态硬盘 金士顿NV2 NVMe(250GB) 1 ¥189 显卡 昂达GT710典范 1GD3静音版 1 ¥199 机箱 游戏风暴优+ 1 ¥89 电源 金河田战龙RX490 1 ¥99 显示器 金正G2402E 1 ¥409 办公组装电脑怎么搭配

    2024年02月09日
    浏览(73)
  • 电脑组装配件知识

    目录 1.电脑硬件基础知识 1.1CPU 1.2内存 ​编辑 1.3硬盘 1.4主板 1.5显卡 ​编辑 1.6显示器 1.7电源 1.8机箱 2.电脑硬件搭配及选购 2.1硬件搭配原则 2.2怎样查询软件或游戏配置 2.3配件购买注意事项 2.4搭配一台普通办公电脑 3.电脑组装 1.1CPU 1.1.2cpu分类 1.1.3CPU天梯       1.1.4cpu重要参

    2024年02月15日
    浏览(54)
  • 电脑组装教程分享!

    【看到身边的小伙伴组装一台自己的电脑,我也想试试。但是我对电脑并不是很熟悉,不太了解具体的电脑组装步骤,求一份详细的教程!】 电脑已经成为我们日常生活中不可或缺的一部分,但是有时我们需要根据我们自己的需求来组装电脑。在这篇文章中,小编将会分享详

    2023年04月13日
    浏览(61)
  • 电脑的组装与维护

    目录 1.常见概念 2.装机流程 3.电脑硬件选购指标 4.BIOS设置 5.硬盘分区 6.系统性能测试与常见维护 总结 常见的电脑类型 : 1.台式机,一种机箱、显示器、键盘及鼠标等设备分离独立的电脑。 2.笔记本,小型可携带高集成的个人电脑,同价位台式机更便宜。 3.一体机,将主机与

    2024年02月09日
    浏览(38)
  • 教你10分钟组装台式电脑

    今天麻哥的Dell主机到了。我们来看一下如何组装一台台式机。 1. 显示屏电源线 :插到插排上 2. 显示屏HDMI线 :插到主机上,HDMI插口 1. 主机电源线 :长得最大,插到插排上 2. 显示屏HDMI线 :插到主机上,HDMI插口(和一、2.是同一根) 3. 键盘线 :插到主机USB插口 4. 鼠标线

    2024年02月12日
    浏览(46)
  • 新手如何组装一台电脑

    首先,我们要先了解一台电脑的基本构成由哪些? CPU 显卡 主板 散热器 磁盘 内存 电源 机箱 显示器 通常我们需要根据自己对电脑的定位,根据需求和资金确定CPU和显卡 CPU主要有AMD和Intel。 Intel芯片单核能力足够强,标准版通常也能符合需求。AMD和Intel的CPU都是可以超频的,

    2024年02月08日
    浏览(45)
  • 电脑组装好了开机完全没反应?

    现在很多用户都会选择自己组装电脑,但是组装好电脑第一次开机完全没反应,这是怎么回事?下面小编就给大家带来完整的解析,快来看看吧。 电脑组装好了开机完全没反应怎么办? 情况一: 第一是机器内部各部件有接触不良问题,比如最常见的内存接触不好, 解决方法

    2024年02月10日
    浏览(69)
  • 电脑组装与维修06----内存参数选购讲解

    10、CPU处理数据的时候,他只跟内存打交道,显卡也是直接接受CPU管理的

    2024年03月21日
    浏览(51)
  • 组装电脑基础知识之电源

    本系列文章是为准备自己组装台式机的小伙伴写的关于中央处理器CPU、主板、显卡等部分的参考资料。 计算机电源的主要作用是将普通交流电转为直流电,再通过斩波控制电压,将不同的电压分别输出给主板、硬盘等计算机部件。 提示:计算机电源决定着系统的稳定性和寿

    2024年02月16日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包