#include <iostream>
using namespace std;
class CPU{
public:
virtual void calculate() = 0;
};
class VideoCard{
public:
virtual void display() = 0;
};
class Memory{
public:
virtual void storage() = 0;
};
class IntelCpu:public CPU{
public:
void calculate(){
cout<<"Intel的CPU开始计算"<<endl;
}
};
class QualcommCpu:public CPU{
public:
void calculate(){
cout<<"Qualcomm的CPU开始计算"<<endl;
}
};
class LenVideo:public VideoCard{
public:
void display(){
cout<<"Lenovo的显卡开始显示"<<endl;
}
};
class LenMem:public Memory{
public:
void storage(){
cout<<"Lenovo的内存开始存储"<<endl;
}
};
class Computer{
public:
Computer(CPU * pc,VideoCard * pv,Memory * pm){
cout<<"--Computer的构造函数在调用--"<<endl;
m_c = pc;
m_v = pv;
m_m = pm;
}
CPU * m_c;
VideoCard * m_v;
Memory * m_m;
void Work()
{
m_c->calculate();
m_v->display();
m_m->storage();
}
~Computer(){
cout<<"--Computer的析构函数在调用--"<<endl;
if(m_c!=NULL||m_v!=NULL||m_m!=NULL){
delete m_c;
delete m_v;
delete m_m;
m_c = NULL;
m_v = NULL;
m_m = NULL;
}
}
};
void test(){
cout<<"第一台电脑:"<<endl;
Computer computer1(new IntelCpu,new LenVideo, new LenMem);
computer1.Work();
cout<<"第二台电脑:"<<endl;
Computer computer2(new QualcommCpu,new LenVideo, new LenMem);
computer2.Work();
}
int main(){
test();
}