赞
踩

- #include<iostream>
- using namespace std;
-
- //抽象不同的零件
-
- //抽象的cpu类
- class Cpu
- {
- public:
- //抽象的计算函数
- virtual void calculate() = 0;
- };
-
- //抽象的显卡类
- class VideoCard
- {
- public:
- //抽象的显示函数
- virtual void display() = 0;
- };
-
- //抽象的内存条类
- class Memory
- {
- public:
- //抽象的存储函数
- virtual void storage() = 0;
- };
-
- //电脑类
- class Computer
- {
- public:
- Computer(Cpu* cpu, VideoCard* vc, Memory* mem)
- {
- m_cpu = cpu;
- m_vc = vc;
- m_mem = mem;
- }
-
- //提供工作的函数
- void work()
- {
- //让零件工作起来,调用具体的接口
- m_cpu->calculate();
- m_vc->display();
- m_mem->storage();
- }
-
- //提供析构函数 释放3个电脑零件
- ~Computer()
- {
- //释放CPU零件
- if (m_cpu != NULL)
- {
- delete m_cpu;
- m_cpu = NULL;
- }
-
- //释放显卡零件
- if (m_vc != NULL)
- {
- delete m_vc;
- m_vc = NULL;
- }
-
- //释放内存条零件
- if (m_mem != NULL)
- {
- delete m_mem;
- m_mem = NULL;
- }
- }
-
- private:
-
- Cpu* m_cpu;//Cpu的零件指针
- VideoCard* m_vc;//显卡零件指针
- Memory* m_mem;//内存条零件指针
- };
-
- //具体厂商
- //Intel厂商
- class IntelCpu :public Cpu
- {
- public:
- virtual void calculate()
- {
- cout << "Intel的CPU开始计算了!" << endl;
- }
- };
-
- class IntelVideoCard :public VideoCard
- {
- public:
- virtual void display()
- {
- cout << "Intel的显卡开始显示了!" << endl;
- }
- };
-
- class IntelMemory :public Memory
- {
- public:
- virtual void storage()
- {
- cout << "Intel的内存条开始存储了!" << endl;
- }
- };
-
- //Lenovo厂商
- class LenovoCpu :public Cpu
- {
- public:
- virtual void calculate()
- {
- cout << "Lenovo的CPU开始计算了!" << endl;
- }
- };
-
- class LenovoVideoCard :public VideoCard
- {
- public:
- virtual void display()
- {
- cout << "Lenovo的显卡开始显示了!" << endl;
- }
- };
-
- class LenovoMemory :public Memory
- {
- public:
- virtual void storage()
- {
- cout << "Lenovo的内存条开始存储了!" << endl;
- }
- };
-
- void test01()
- {
- //第一台电脑零件
- Cpu* intelCpu = new IntelCpu;
- VideoCard* intelCard = new IntelVideoCard;
- Memory* intelMem = new IntelMemory;
-
- cout << "第一台电脑开始工作:" << endl;
- //创建第一台电脑
- Computer* computer1 = new Computer(intelCpu, intelCard, intelMem);
- computer1->work();
- delete computer1;
-
- cout << "------------------------" << endl;
- cout << "第二台电脑开始工作:" << endl;
- 第二台电脑组装
- //Cpu* lenovoCpu = new LenovoCpu;
- //VideoCard* lenovoCard = new LenovoVideoCard;
- //Memory* lenovoMem = new LenovoMemory;
-
- //创建第二台电脑
- Computer* computer2 = new Computer(new LenovoCpu, new LenovoVideoCard, new LenovoMemory);
- computer2->work();
- delete computer2;
-
- cout << "------------------------" << endl;
- cout << "第三台电脑开始工作:" << endl;
- 第三台电脑组装
- //Cpu* lenovoCpu = new LenovoCpu;
- //VideoCard* intelCard3 = new IntelVideoCard;
- //Memory* lenovoMem = new LenovoMemory;
-
- //创建第三台电脑
- Computer* computer3 = new Computer(new LenovoCpu, new IntelVideoCard, new LenovoMemory);
- computer3->work();
- delete computer3;
- }
-
- int main()
- {
- test01();
-
- system("pause");
- return 0;
- }


Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。