c++多态实例之电脑组装
时间:2022-07-23
本文章向大家介绍c++多态实例之电脑组装,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
一个接口,可以使用不同的硬件。
#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 Computer {
public:
Computer(Cpu* cpu,VideoCard* videoCard,Memory* memory) {
this->cpu = cpu;
this->videoCard = videoCard;
this->memory = memory;
}
void work() {
cpu->calculate();
videoCard->display();
memory->storage();
}
~Computer() {
if (cpu != NULL) {
delete cpu;
cpu = NULL;
}
if (videoCard != NULL) {
delete videoCard;
videoCard = NULL;
}
if (memory != NULL) {
delete memory;
memory = NULL;
}
}
private:
Cpu* cpu;
VideoCard* videoCard;
Memory *memory;
};
class InterNetCpu :public Cpu {
void calculate() {
cout << "这是因特尔的cpu开始计算了" << endl;
}
};
class InterNetVc :public VideoCard {
void display() {
cout << "这是因特尔的显卡开始显示了" << endl;
}
};
class InterNetMe :public Memory {
void storage() {
cout << "这是因特尔的内存条开始存储了" << endl;
}
};
class SamsungCpu :public Cpu {
void calculate() {
cout << "这是samsung的cpu开始计算了" << endl;
}
};
class SamsungVc :public VideoCard {
void display() {
cout << "这是samsung的显卡开始显示了" << endl;
}
};
class SamsungMe :public Memory {
void storage() {
cout << "这是samsung的内存条开始存储了" << endl;
}
};
void test() {
cout << "-------第一批零件-------" << endl;
Cpu* intelCpu = new InterNetCpu;
VideoCard* intelVc = new InterNetVc;
Memory* intelMe = new InterNetMe;
//一台电脑
Computer* computer = new Computer(intelCpu, intelVc, intelMe);
computer->work();
delete computer;
cout << "-------第二批零件-------" << endl;
Cpu* samsungCpu = new SamsungCpu;
VideoCard* samsungVc = new SamsungVc;
Memory* samsungMe = new SamsungMe;
Computer* computer2 = new Computer(intelCpu, intelVc, intelMe);
computer2->work();
delete computer2;
}
int main() {
test();
system("pause");
return 0;
}
输出:
- HttpClient介绍
- 10个使用 Foundation 框架开发的WordPress 主题推荐
- jQuery 效果使用
- 几款更换WordPress 后台UI 的插件推荐
- 入门:构建简单的Web API
- WordPress 编辑器快捷键——让写作来得更方便些吧!
- ASP.NET Web API: 宿主(Hosting)
- 在 Windows Phone上使用QQConnect OAuth2
- WordPress 开发之使用WordPress 3.8+后台图标(dashicons)
- 基础(二)
- Ionic:高级的 HTML5 移动APP(Web App)开发框架
- 为WordPress 评论框添加HTML5 表单验证
- Sass 基础(一)
- 送上段模拟圣诞节下雪的javascript 代码
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- PyCharm中配置PySide2的图文教程
- 浅析Python 简单工厂模式和工厂方法模式的优缺点
- thinkPHP利用ajax异步上传图片并显示、删除的示例
- 对python中list的五种查找方法说明
- Laravel框架查询构造器简单示例
- PHP调用微博接口实现微博登录的方法示例
- Python使用pyexecjs代码案例解析
- PHP抽象类与接口的区别实例详解
- laravel获取不到session的三种解决办法【推荐】
- php封装的pdo数据库操作工具类与用法示例
- 利用PyQt5+Matplotlib 绘制静态/动态图的实现代码
- PHP封装类似thinkphp连贯操作数据库Db类与简单应用示例
- Python基于正则表达式实现计算器功能
- python利用os模块编写文件复制功能——copy()函数用法
- 解决python 虚拟环境删除包无法加载的问题