【C++学习笔记】练习小项目之多态实现电脑组装

本文介绍了一个C++学习项目,通过多态实现了电脑组装。创建了CPU、GPU和内存条的抽象基类,不同厂商的实现作为派生类。电脑类组装这些部件并调用相应功能,通过三台不同配置电脑的实例展示了多态的应用。学习重点包括虚函数、析构函数和抽象类的概念。
摘要由CSDN通过智能技术生成


一、功能描述

二、代码实现

三、学习后记

一、功能描述

功能描述:
1.电脑主要组成:CPU,显卡,内存条;
2.将每个零件封装出抽象基类,并且提供不同的厂商生产不同的零件;
3.创建电脑类提供让电脑工作的函数,并且调用每个零件工作的接口;
4.测试时组织三台不同的电脑进行工作。

二、代码实现

//2021/7/18 21:20
//抽象不同零件类
class CPU
{
public:
	//抽象的计算函数
	virtual void calaculate() = 0;
};
class GPU
{
public:
	//抽象的显示函数
	virtual void display() = 0;
};
class Memory
{
public:
	//抽象的存储函数
	virtual void storage() = 0;
};

//电脑类
class Computer
{
public:
	Computer(CPU *cpu, GPU *gpu, Memory * mem)
	{
		m_cpu = cpu;
		m_gpu = gpu;
		m_mem = mem;
	}
	//提供工作的函数
	void work()
	{
		m_cpu->calaculate();
		m_gpu->display();
		m_mem->storage();
	}
	//提供析构函数,释放三个电脑零件
	~Computer()
	{
		//释放CPU
		if (m_cpu != NULL)
		{
			delete m_cpu;
			m_cpu = NULL;
		}
		//释放GPU
		if (m_cpu != NULL)
		{
			delete m_gpu;
			m_gpu = NULL;
		}
		//释放Memory
		if (m_mem != NULL)
		{
			delete m_mem;
			m_mem = NULL;
		}

	}

private:
	CPU *m_cpu; //CPU零件指针
	GPU *m_gpu; //GPU零件指针
	Memory *m_mem; //内存卡零件指针

};

//具体厂商
//1.Intel厂商
class IntelCPU :public CPU
{
public:
	virtual void calaculate()
	{
		cout << "Intel的CPU开始计算了!" << endl;
	}

};
class IntelGPU :public GPU
{
public:
	virtual void display()
	{
		cout << "Intel的GPU开始显示了!" << endl;
	}

};
class IntelMemory :public Memory
{
public:
	virtual void storage()
	{
		cout << "Intel的内存卡开始存储了!" << endl;
	}

};
//Lenovo厂商
class LenovoCPU :public CPU
{
public:
	virtual void calaculate()
	{
		cout << "Lenovo的CPU开始计算了!" << endl;
	}

};
class LenovoGPU :public GPU
{
public:
	virtual void display()
	{
		cout << "Lenovo的GPU开始显示了!" << endl;
	}

};
class LenovoMemory :public Memory
{
public:
	virtual void storage()
	{
		cout << "Lenovo的内存卡开始存储了!" << endl;
	}

};

void test1()
{
	//第一台电脑零件
	CPU *intelCpu = new IntelCPU;
	GPU * intelGpu = new IntelGPU;
	Memory * intelMem = new IntelMemory;

	//创建第一台电脑
	Computer *computer1 = new Computer(intelCpu, intelGpu, intelMem);
	computer1->work();
	delete computer1;
	cout << "-----------------------------------------" << endl;

	//第二台电脑组装
	Computer *computer2 = new Computer(new LenovoCPU, new LenovoGPU, new LenovoMemory);
	computer2->work();
	delete computer2;
	cout << "-----------------------------------------" << endl;

	//第三台电脑组装
	Computer *computer3 = new Computer(new IntelCPU, new LenovoGPU, new LenovoMemory);
	computer3->work();
	delete computer3;

}


int main()
{

	test1();
	//test2();

	system("pause");

	return 0;

}

运行结果

三、学习后记

一些知识点总结:
1.虚析构或者纯虚析构就是用来解决通过父类指针释放子类对象;
2.如果子类中没有堆区数据,可以不写为虚析构或纯虚析构;
3.拥有纯虚析构函数的类也属于抽象类。
4.纯虚函数:只要有一个纯虚函数,这个类称为抽象类;
5.抽象类特点:
(1.无法实例化对象;
(2.抽象类的子类,必须要重写父类中的纯虚函数,否则也属于抽象类。

多态很重要也很使用,一定要好好掌握呀!
好好学习!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值