#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<string>
using namespace std;
//零件类
class CPU//CPU零件
{
public:
virtual void calculatr() = 0;//纯虚函数
};
class Videocard//显卡零件
{
public:
virtual void display() = 0;//纯虚函数
};
class Memory//内存条零件
{
public:
virtual void storage() = 0;//纯虚函数
};
//Inter供应商类
class InterCPU :public CPU
{
public:
virtual void calculatr()
{
cout << "这是Inter的CPU在工作" << endl;//重写纯虚函数
}
};
class InterVideocard:public Videocard
{
public:
virtual void display()//重写纯虚函数
{
cout << "这是Inter的显卡在工作" << endl;
}
};
class InterMemory:public Memory//重写纯虚函数
{
public:
virtual void storage()
{
cout << "这是Inter的内存条在工作" << endl;
}
};
//lenove供应商类
class lenoveCPU :public CPU
{
public:
virtual void calculatr()//重写纯虚函数
{
cout << "这是lenove的CPU在工作" << endl;
}
};
class lenoveVideocard :public Videocard//重写纯虚函数
{
public:
virtual void display()
{
cout << "这是lenove的显卡在工作" << endl;
}
};
class lenoveMemory :public Memory//重写纯虚函数
{
public:
virtual void storage()
{
cout << "这是lenove的内存条在工作" << endl;
}
};
//电脑类
class Computer
{
public:
Computer(CPU* c, Videocard* v, Memory* m)//构造函数
{
m_c = c;
m_v = v;
m_m = m;
}
void func()//工作函数
{
m_c->calculatr();
m_v->display();
m_m->storage();
}
~Computer()//电脑类析构函数
{
if (m_c != NULL)
{
delete m_c;
m_c = NULL;
}
if (m_v != NULL)
{
delete m_v;
m_v = NULL;
}
if (m_m != NULL)
{
delete m_m;
m_m = NULL;
}
}
//接收基类零件指针
private:
CPU* m_c;//CPU零件指针
Videocard* m_v;//显卡零件指针
Memory* m_m;//内存条零件指针
};
void test()//实现函数
{
cout << "------------------------第一台电脑正在工作------------------------" << endl;
CPU* c = new InterCPU;
Videocard* v = new InterVideocard;
Memory* m = new InterMemory;
Computer* c1=new Computer(c, v, m);
c1->func();
delete c1;
cout << "------------------------第二台电脑正在工作------------------------" << endl;
Computer* c2 = new Computer(new lenoveCPU, new lenoveVideocard, new lenoveMemory);
c2->func();
delete c2;
cout << "------------------------第二台电脑正在工作------------------------" << endl;
Computer* c3 = new Computer(new InterCPU, new lenoveVideocard, new lenoveMemory);
c3->func();
delete c3;
}
int main()
{
test();//函数调用
return 0;
}
C++多态性案例 电脑组装(3种基类零件由两个供应商提供,组成3台不同的电脑)
最新推荐文章于 2024-04-29 09:26:43 发布