//多态案例三 --调用组装
//CPU---计算 显卡---显示 内存条--储存
class CPU
{
public:
//计算
virtual void Calculator() = 0;
};
class Graphics
{
public:
virtual void Display() = 0;
};
class MemoryModule
{
public:
virtual void Store() = 0;
};
//创建一个电脑类
class Computer
{
public:
//构造函数
Computer(CPU* cpu, Graphics* gra, MemoryModule* mem)
{
m_cpu = cpu;
m_gra = gra;
m_mem = mem;
}
//电脑工作
void Work()
{
m_cpu->Calculator();
m_gra->Display();
m_mem->Store();
}
//释放工作零件
~Computer()
{
if (m_cpu != NULL)
{
delete m_cpu;
m_cpu = NULL;
}
else if(m_gra != NULL)
{
delete m_gra;
m_gra = NULL;
}
else if(m_mem != NULL)
{
delete m_mem;
m_mem= NULL;
}
}
private:
//调用包含了CPU Graphics MemoryModule
CPU* m_cpu;
Graphics* m_gra;
MemoryModule* m_mem;
};
//具体厂商
class intermanCPU:public CPU
{
public:
virtual void Calculator()
{
cout << "inter的CPU在运转了" << endl;
}
};
class intermanGRA :public Graphics
{
public:
virtual void Display()
{
cout << "inter的显卡在运转了" << endl;
}
};
class intermanMem :public MemoryModule
{
public:
virtual void Store()
{
cout << "inter的内存条在运转了" << endl;
}
};
int main()
{
//实例化电脑的类对象
//先把零件类对象实例化
CPU* interCPU = new intermanCPU;//cpu
Graphics* interGra = new intermanGRA;//显卡
MemoryModule* interMem = new intermanMem;//内存条
//将零件全部组装到电脑上
//组装一台因特尔的电脑
Computer* interComputer = new Computer(interCPU, interGra, interMem);
interComputer->Work();
delete interComputer;//释放堆上创建的内存空间
}
运用知识点: 纯虚函数,继承,堆空间创建、删除
如有错误,多多指教!