01电脑组装me.cpp

需要实现所有的虚函数,不台灵活。架构函数无法写,设计不够成熟

#if 1
#include<iostream>
using namespace std;
class Computer {
public:virtual void caculate() = 0;virtual void display() = 0;virtual void storage() = 0;
};class Inter :public Computer {
public:virtual void caculate() {cout << "英特尔cpu" << endl;}virtual void display() {cout << "英特尔card" << endl;}virtual void storage() {cout << "英特尔内存条" << endl;}
};
class NVIDA :public Computer {
public:virtual void caculate() {cout << "NVIDAcpu" << endl;}virtual void display() {cout << "NVIDAcard" << endl;}virtual void storage() {cout << "NVIDA内存条" << endl;}
};
class Kingston :public Computer {
public:virtual void caculate() {cout << "Kingstoncpu" << endl;}virtual void display() {cout << "Kingstoncard" << endl;}virtual void storage() {cout << "Kingston内存条" << endl;}
};//架构函数不会写
//void OperatorComputer(Computer *cpu, Computer *card, Computer *storage) {
//  cpu->caculate();
//  card->display();
//  storage->storage();
//}int main() {Computer *inter = new Inter;Computer *nvida= new NVIDA;Computer *kingston = new Kingston;//第一台电脑inter->caculate();inter->display();inter->storage();//第二台电脑inter->caculate();kingston->storage();nvida->display();}
/*
英特尔cpu
英特尔card
英特尔内存条
英特尔cpu
Kingston内存条
NVIDAcard
*/
#endif

02电脑组装ok.cpp

#if 1
#include<iostream>
using namespace std;//-----抽象层---------
class CPU {
public:virtual void caculate() = 0;virtual ~CPU() {}
};
class Card {
public:virtual void display() = 0;virtual ~Card() {}
};
class Memory {
public:virtual void storage() = 0;virtual ~Memory() {}
};
//要去重写所有的虚函数。多台电脑多次执行。 设计不合理
//class Computer :public CPU, public Card, public Memory {
//
//};//架构类
class Computer {
public:Computer(CPU *cpu, Card *card, Memory *memory) {this->card = card;this->cpu = cpu;this->memory = memory;}void work() {this->card->display();this->cpu->caculate();this->memory->storage();}~Computer() {cout << "~Computer" << endl;if (this->cpu != NULL) {delete this->cpu;this->cpu = NULL;}if (this->card != NULL) {delete this->card;this->card = NULL;}if (this->memory != NULL) {delete this->memory;this->memory = NULL;}}
private:CPU *cpu;Card *card;Memory *memory;
};//-----------实现层-----------class InterCPU :public CPU {
public:virtual void caculate() {cout << "InterCPU" << endl;}~InterCPU() {cout << "~InterCPU()" << endl;}
};
class InterCard :public Card {
public:virtual void display() {cout << "InterCard" << endl;}~InterCard() {cout << "~InterCard()" << endl;}
};
class InterMem :public Memory {
public:virtual void storage() {cout << "Intermemory" << endl;}~InterMem() {cout << "~InterMem()" << endl;}
};class NVIDACard :public Card {
public:virtual void display() {cout << "NVIDACard" << endl;}~NVIDACard() {cout << "~NVIDACard()" << endl;}
};
class KingtonMem :public Memory {
public:virtual void storage() {cout << "Kingtonmemory" << endl;}~KingtonMem() {cout << "~KingtonMem()" << endl;}
};//-------------业务层-----------
void test01() {//1 组装第一台inter系列电脑CPU *interCpu = new InterCPU;Card *interCard = new InterCard;Memory *interMem = new InterMem;Computer c1(interCpu, interCard, interMem);  c1.work();//delete interCpu;     //在Computer中已经完成对interCpu的析构,//所以再次delete程序崩溃//delete c1;           //c1不是在堆上,所以不能用delete//cout << endl;2 组装第二台电脑//Card *nvidaCard = new NVIDACard;//Memory *kingtonMem = new KingtonMem;//Computer c2(interCpu, nvidaCard, kingtonMem);//c2.work();/*delete interCpu;delete interCard;delete interMem;*/
}
/*
InterCard
InterCPU
Intermemory
~Computer
~InterCPU()
~InterCard()
~InterMem()
*/
void test02() {  //传递匿名//1 组装第一台inter系列电脑Computer *c1=new Computer(new InterCPU, new InterCard, new InterMem);c1->work();delete c1;   //调用析构函数
}
/*
InterCard
InterCPU
Intermemory
~Computer
~InterCPU()
~InterCard()
~InterMem()
*/
int main() {//test01();test02();return 0;
}
#endif

C++基础18-抽象类-电脑组装练习相关推荐

  1. 计算机组装与维护.iso,《一学就会魔法书-电脑组装与维护》[ISO]

    一学就会魔法书-电脑组装与维护 内容提要 <一学就会魔法书-电脑组装与维护>主要讲解了电脑硬件的基础知识和电脑组装的部件,包括主板.CPU.存储设备.显示设备.音频设备.网络设备.机箱电源 ...

  2. 拆装计算机主机,零基础如何组装电脑?装机之家手把手教您电脑组装教程图解...

    自己组装电脑对于小白来说,确实是一个技术活,如果没有一点点电脑组装经验,肯定无从下手的.当然对于目前互联网信息化时代,想要找一篇装机教程并不难,那么我们跟着装机教程一步一步学习并实践,相信很快就可以将 ...

  3. 从零开始学计算机组装与维修技术,从新手到高手:电脑组装、维护与故障排除...

    从新手到高手:电脑组装.维护与故障排除 语音 编辑 锁定 讨论 上传视频 <从新手到高手:电脑组装.维护与故障排除>是2010年年清华大学出版社出版的图书.[1] 书    名 从新手到高 ...

  4. 计算机组装维护看图填空,电脑组装测试维护故障排除

    电脑组装测试维护故障排除 语音 编辑 锁定 讨论 上传视频 <电脑组装测试维护故障排除>是2009年4月1日机械工业出版社的书.本书针对初学者的需求,以通俗的语言和清晰详尽的操作案例,全面 ...

  5. 电脑组装与维修完全学习手册 pdf电子书

    电脑组装与维修完全学习手册编辑推荐: 踏稳入门的脚步:由北京中关村专业维修工程师和培训专家结合多年实践经验精心编著,从电脑基础知识.部件构成.元器件检测和维修工具的使用入手,图解教学,即使新手也能轻松 ...

  6. 计算机组装病毒的分类,电脑组装·维修·反病毒

    <电脑组装·维修·反病毒>是2009年2月1日电子工业出版社出版的图书,作者是胡存生. 书    名 电脑组装·维修·反病毒 作    者 胡存生 ISBN 9787121081262 页 ...

  7. [.net 面向对象编程基础] (18) 泛型

    [.net 面向对象编程基础] (18) 泛型 上一节我们说到了两种数据类型数组和集合,数组是指包含同一类型的多个元素,集合是指.net中提供数据存储和检索的专用类. 数组使用前需要先指定大小,并且检 ...

  8. 电脑组装与维护教程_男,78年,懂电脑组装、运营维护青岛地区寻找电脑维护合适岗位...

    男,78年,懂电脑组装.运营维护青岛地区寻找合适岗位 海友汇--聚四海友人,汇八方资源 "海友汇"介绍 海友汇,是一个众多海友自发链接的社群组织.做公益服务.就业创业服务.投融资. ...

  9. 外星人台式电脑_执掌游戏世界 外星人ALIENWARE m15丨17.9mm机身轻悍降临【电脑组装】公众号分享台式机笔记本电脑 京东商城特惠通道...

    点击上方蓝字 进入公众号 感谢有你 见证成长 游戏,不仅仅是一种娱乐形式 它是体验世界的方式,更是想象力的飞跃 它能构建宏大震撼的史诗级传奇画面 也能在虚拟世界触发极致的战斗体验 而你需要足够轻薄强悍 ...

最新文章

  1. Postman系列之@RequestBody修饰的对象传参数
  2. Linux shell 基础之Vim编辑器
  3. 学完python基础开始学爬虫_零基础入门Python爬虫不知道怎么学?这是入门的完整教程...
  4. Linux中设置服务自启动的三种方式(转)
  5. 教你解决ChartDirector Linux下中文乱码
  6. 混合APP开发框架资料汇总
  7. Hexo+码云+git快速搭建免费的静态Blog
  8. 【模拟】【递归】电子表格(jzoj 2127)
  9. python逐行读取txt写入excel_用python从符合一定格式的txt文档中逐行读取数据并按一定规则写入excel(openpyxl支持Excel 2007 .xlsx格式)...
  10. 一 前端基础,http协议,form表单
  11. er图转关系模式规则_ER模型怎么画?快速绘制ER模型操作方法分享
  12. tigervnc环境搭建
  13. Android studio for mac
  14. SQLServer生成带数据的脚本
  15. 实时监控网页变化,并增加多种提示信息
  16. 创新创业孵化知识体系-创业实践导论之-技术专栏
  17. Android实例开发中按钮(Button)的四种点击方式的实现
  18. MySQL 中STD、STDDEV、STDDEV_SAMP 标准差函数的区别
  19. svg怎么转换html格式,svg是什么格式
  20. 电信计费综合管理系统

热门文章

  1. sql中in和exist语句的区别?
  2. Java基础篇4——数组
  3. ubuntu编写python脚本_python在ubuntu中的几种方法(小结)
  4. python继承语法_python中继承父类的例子(python3的语法)
  5. python自然语言处理库_Python 自然语言处理(NLP)工具库汇总
  6. Maven学习(一)————Maven技术概述
  7. 权限验证框架Shiro
  8. hive 行转列和列转行的方法_面试常考!SQL行转列和列转行
  9. 声明对象_静态变量(使用同一个类声明的对象可以共享一个值)
  10. 求最长单调子序列java,单调减子序列(java实现)