C++多态案例三.电脑组装

本文通过一个电脑组装的案例,展示了C++中多态的运用。案例中,CPU、显卡和内存条被封装为抽象基类,不同厂商如Intel和Lenovo提供了各自的实现。电脑类包含组装好的组件,并调用它们的工作接口。在测试阶段,组装了三台不同配置的电脑并进行运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

案例描述

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

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

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

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

在这里插入图片描述

例:

#include <iostream>
#include <string> 
using namespace std;
//CPU 
class CPU
{
public:
	virtual void calculate() = 0;
};
//显卡 
class VideoCard
{
public:
	virtual void display() = 0; 
};
//硬盘 
class Memory
{
public:
	virtual void storage() = 0; 
};

//电脑类
class Computer 
{
public:
	Computer(CPU* cpu, VideoCard* vc, Memory* mem)
	{
		m_cpu = cpu;
		m_vc = vc;
		m_mem = mem;
	}
	//提供工作的函数
	void work()
	{
		//让零件工作 
		m_cpu->calculate();
		m_vc->display();
		m_mem->storage();
	} 
	//提供析构函数 释放3个电脑零件
	~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;
	VideoCard* m_vc;
	Memory* m_mem; 
}; 

//Inter零件厂商
class IntelCPU :public CPU
{
	virtual void calculate()
	{
		cout << "这是Inter的CPU !" << endl; 
	}
};
class IntelCard :public VideoCard
{
	virtual void display()
	{
		cout << "这是Inter的显卡 !" << endl; 
	}
};
class IntelMemory :public Memory
{
	virtual void storage()
	{
		cout << "这是Inter的硬盘 !" << endl; 
	}
};

//Lenovo零件厂商
class LenovoCPU :public CPU
{
	virtual void calculate()
	{
		cout << "这是Lenovo的CPU !" << endl; 
	}
}; 
class LenovoVideoCard :public VideoCard
{
	virtual void display()
	{
		cout << "这是Lenovo的显卡 !" << endl; 
	}
};
class LenovoMemory:public Memory
{
	virtual void storage()
	{
		cout << "这是Lenovo的硬盘 !" << endl; 
	}
};

void test01()
{
	//零件
	CPU* intelCpu = new IntelCPU;
	VideoCard* intelCard = new IntelCard; 
	Memory* IntelMem = new IntelMemory;
	
	CPU* LenovoCpu = new LenovoCPU;
	VideoCard* LenovoCard = new LenovoVideoCard; 
	Memory* LenovoMem = new LenovoMemory;
	
	//创建第一台电脑
	cout << "第一台电脑" << endl;
	Computer* computer1 = new Computer(intelCpu,intelCard,IntelMem); 
	computer1->work();
	delete computer1;
	//创建第二台电脑
	cout << "第二台电脑" << endl;
	Computer* computer2 = new Computer(LenovoCpu,LenovoCard,LenovoMem); 
	computer2->work();
	delete computer2;
	//创建第三台电脑
	cout << "第三台电脑" << endl;
	Computer* computer3 = new Computer(new LenovoCPU,new IntelCard,new LenovoMemory); 
	computer2->work();
	delete computer2; 
}
int main()
{	
	test01();
	 
	system("pause");
	
	return 0;	
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值