#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;
//CPU
class CPU {
public:
virtual void calculate() = 0; //计算
};
//显卡
class GraphicsCard {
public:
virtual void display() = 0; //显示
};
//内存条
class MemoryModule {
public:
virtual void storage() = 0; //储存
};
//Intel型号CPU
class IntelCPU : public CPU {
public:
void calculate()
{
cout << "英特尔CPU工作" << endl;
}
};
//Intel型号显卡
class IntelGraphicsCard : public GraphicsCard {
public:
void display()
{
cout << "英特尔显卡工作" << endl;
}
};
//Intel型号内存条
class IntelMemoryModule : public MemoryModule {
public:
void storage()
{
cout << "英特尔内存条工作" << endl;
}
};
//Lenovo型号CPU
class LenovoCPU : public CPU {
public:
void calculate()
{
cout << "联想CPU工作" << endl;
}
};
//Lenovo型号显卡
class LenovoGraphicsCard : public GraphicsCard {
public:
void display()
{
cout << "联想显卡工作" << endl;
}
};
//Lenovo型号内存条
class LenovoMemoryModule : public MemoryModule {
public:
void storage()
{
cout << "联想内存条工作" << endl;
}
};
class Computer {
public:
Computer(CPU* CPU, GraphicsCard* GraphicsCard, MemoryModule* MemoryModule)
{
this->m_CPU = CPU;
this->m_GraphicsCard = GraphicsCard;
this->m_MemoryModule = MemoryModule;
}
void DoWork()
{
this->m_CPU->calculate();
this->m_GraphicsCard->display();
this->m_MemoryModule->storage();
}
~Computer()
{
cout << "析构函数调用" << endl;
if (this->m_CPU)
{
delete this->m_CPU;
this->m_CPU = NULL;
}
if (this->m_GraphicsCard)
{
delete this->m_GraphicsCard;
this->m_GraphicsCard = NULL;
}
if (this->m_MemoryModule)
{
delete this->m_MemoryModule;
this->m_MemoryModule = NULL;
}
}
CPU* m_CPU; //CPU
GraphicsCard* m_GraphicsCard; //显卡
MemoryModule* m_MemoryModule; //内存条
};
void test01()
{
MemoryModule* intelMemoryModule = new IntelMemoryModule; //英特尔内存条
CPU* lenovoCPU = new LenovoCPU; //联想CPU
GraphicsCard* lenovolGraphicsCard = new LenovoGraphicsCard; //联想显卡
cout << "第一台电脑组成" << endl;
Computer c1(lenovoCPU, lenovolGraphicsCard, intelMemoryModule);
c1.DoWork();
}
int main()
{
test01();
system("pause");
return EXIT_SUCCESS;
}
c++----多态--电脑组装案例
最新推荐文章于 2024-07-20 22:49:13 发布