3.5 C++ 纯虚函数、抽象类 3.6 依赖倒转原则

news2024/9/29 12:27:25

 纯虚函数

class A
{
public:
    
    virtual void print()
    {
        cout<<"A"<<endl;
    }
    virtual void test()=0;          //纯虚函数
};

一个类内有纯虚函数,这个类就叫抽象类;

抽象类不能实例化;        <java、python:继承抽象类的的子类必须实现父类的纯虚函数>

充当功能接口或者类接口

                

依赖于抽象类编程

避免依赖于具体类编程:银行加钱更新数据库

依赖倒转原则

例子妈妈讲故事

实现:组装电脑:

#include <iostream>
using namespace std;
class Component     //抽象出————零件这一抽象类::名字和作用
{
public:
    virtual void name()=0;
    virtual void func()=0;
};
class Cpu:public Component
{
    void name()
    {
        cout<<"Cpu--"<<endl;
    }
    void func()
    {
        cout<<"负责计算"<<endl;
    }
};
class Disk:public Component
{
    void name()
    {
        cout<<"Disk--"<<endl;
    }
    void func()
    {
        cout<<"负责存储静态数据"<<endl;
    }
};
class Mem:public Component
{
    void name()
    {
        cout<<"Mem--"<<endl;
    }
    void func()
    {
        cout<<"负责处理动态数据"<<endl;
    }
};
class Adm          //抽象出————管理员这一抽象类::组装和配置
{
public:
    void assemble()
    {
        cout<<"Adm 组装了一台电脑:"<<endl;
    }
    void allocation( Component *c0)
    {
        c0->name();
        c0->func();
    }
};
int main()
{
    Adm zhang;
    zhang.assemble();

    Cpu *c1=new Cpu;
    Disk *d1=new Disk;
    Mem *m1=new Mem;
    zhang.allocation(c1);
    zhang.allocation(d1);
    zhang.allocation(m1);
    return 0;
}

运行结果如下:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/852781.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

掌握最新的测评补单技术,了解速卖通、虾皮平台的风控机制

想要销量好&#xff0c;免不了要进行测评补单的&#xff0c;因为不管对于哪一个平台的新店铺新产品而言&#xff0c;前期只靠自然流量是很难的&#xff0c;速卖通平台也一样&#xff01;那么速卖通平台要如何进行测评补单呢&#xff1f; 市面上有许多不同的测评系统&#xff0c…

uniapp调查问卷评价功能

我本来用的是uniapp官方提供的组件uni-rate组件&#xff0c;但修改成我想要的样式有点麻烦&#xff0c;于是我就自己手写一个&#xff0c;比用组件简单一点&#xff1b; dom结构 <text class"formTit must">请您对本次活动进行评价</text> <view cl…

【word密码】word设置只读,如何取消?

Word文件打开之后发现是只读模式&#xff0c;那么我们如何取消word文档的只读模式呢&#xff1f;今天给大家介绍几种只读模式的取消方法。 属性只读 有些文件可能是在文件属性中添加了只读属性&#xff0c;这种情况&#xff0c;我们只需要点击文件&#xff0c;再次查看文件属…

爬虫012_字典高级操作_查询_修改_添加_删除和清空_遍历---python工作笔记031

然后来看字典高级,首先 打印某个元素 然后打印的时候注意,如果直接打印的值,在字典中没有就报错 这里要注意不能用点访问

集合工具类 Collections:提升集合操作效率

文章目录 多元素添加&#xff1a;addAll 方法随机置换&#xff1a;shuffle 方法自定义对象排序&#xff1a;sort 方法总结 在Java的集合框架中&#xff0c;Collections 是一个包含了许多操作集合的静态方法的工具类。通过使用 Collections 类提供的方法&#xff0c;我们能够更加…

SDU Crypto School - 计算不可区分性1

Encryption: Computational security 1-4 主讲人&#xff1a;李增鹏&#xff08;山东大学&#xff09; 参考教材&#xff1a;Jonathan Katz, Yehuda Lindell, Introduction to Modern Cryptography - Principles and Protocols. 什么是加密 首先&#xff0c;加密方案的目的在于…

【海拥工具】分享200+个关于AI的网站

给大家分享一个学习、摸鱼必备网站&#xff0c;我的好友海拥✘&#xff08;全网粉丝近20万&#xff0c;CSDN 内容合伙人&#xff0c;全栈领域优质创作者&#xff0c;华为云享专家&#xff0c;阿里云专家博主&#xff0c;InfoQ、蓝桥云课签约作者&#xff0c;HDZ核心组成员&…

石子游戏 dfs + 备忘录 JAVA

Alice 和 Bob 用几堆石子在做游戏。一共有偶数堆石子&#xff0c;排成一行&#xff1b;每堆都有 正 整数颗石子&#xff0c;数目为 piles[i] 。 游戏以谁手中的石子最多来决出胜负。石子的 总数 是 奇数 &#xff0c;所以没有平局。 Alice 和 Bob 轮流进行&#xff0c;Alice 先…

ArcGIS Pro基础入门、制图、空间分析、影像分析、三维建模、空间统计分析与建模、python融合、案例应用全流程科研能力提升

目录 第一章 入门篇 GIS理论及ArcGIS Pro基础 第二章 基础篇 ArcGIS数据管理与转换 第三章 数据编辑与查询、拓扑检查 第四章 制图篇 地图符号与版面设计 第五章 空间分析篇 ArcGIS矢量空间分析及应用 第六章 ArcGIS栅格空间分析及应用 第七章 影像篇 遥感影像处理 第八…

如何在Linux布置nginx(附带Nginx基本操作步骤)

文章目录 前言一、下载环境依赖二、下载nginx安装包三、具体操作流程总结 前言 提示&#xff1a;下述操作步骤适合内网服务器、局域网服务器和公网服务器。 不足之处欢迎交流指正&#xff0c;不喜勿喷。 一、下载环境依赖 yum -y install gcc zlib zlib-devel pcre-devel ope…

【升职加薪秘籍】我在服务监控方面的实践(4)-日志监控

大家好,我是蓝胖子&#xff0c;关于性能分析的视频和文章我也大大小小出了有一二十篇了&#xff0c;算是已经有了一个系列&#xff0c;之前的代码已经上传到github.com/HobbyBear/performance-analyze 接下来这段时间我将在之前内容的基础上&#xff0c;结合自己在公司生产上构…

CKA考试注意事项--考前必看!

一、考前 1. 核心&#xff0c;多练题&#xff0c;练到滚瓜烂熟&#xff0c;最好在1.5h内完成全部题目&#xff0c;有k8s基础练习两周即可&#xff0c;没基础可能要一个月。 2. 建议上TB购买一份题库&#xff08;95%与考试一致&#xff09;&#xff0c;并且会赠送题目k8s练习环…

[C++] 类与对象(中)完整讲述运算符重载示例 -- 日期类(Date) -- const成员

目录 1、前言 2、全缺省的构造函数 3、打印接口 4、拷贝构造 5、赋值运算符重载&#xff08;operator&#xff09; 5.1赋值重载是默认成员函数&#xff0c;重载格式&#xff1a; 5.2 赋值重载不能为全局函数 5.3 编译器默认生成 6、析构函数 7、operator> 8、ope…

Swift async/await 并发中如何将任务组(TaskGroup)转换为异步序列(AsyncSequence)

功能需求 在 Swift 新结构化并行模型的开发中, 提出了任务组(TaskGroup)和异步序列(AsyncSequence)的概念。有时候,为了简洁和效率方面的原因,我们需要将 TaskGroup 的结果转换为异步序列。 如上图所示,我们试图将任务组的结果转换为异步序列,但不幸失败了。 那么…

AI在线取英文名

AI在线取英文名 您是否曾经为了给自己、孩子或者您的产品取英文名字而苦恼&#xff1f;如何保留中文名字的音韵特点&#xff0c;同时又能传达名字的文化含义&#xff1f;别担心&#xff0c;我们为您准备了一款强大而创新的在线工具—— 中英名字创意匹配器&#xff0c;让您在命…

Ubuntu系统下库的相关问题解析

本文通过以下几个问题对Ubuntu系统下库的相关问题进行解析。 1.库是什么? 库是写好的&#xff0c;现有的&#xff0c;成熟的&#xff0c;可以复用的代码。现实中每个程序都要依赖很多基础的底层库&#xff0c;不可能每个人的代码都从零开始&#xff0c;因此库的存在意义非同…

ad+硬件每日学习十个知识点(27)23.8.7 (DCDC的datasheet)

文章目录 1.DCDC拿到手册需要关注的参数2.MOS选型3.TPS54331的ECO模式&#xff08;跳跃模式&#xff0c;损耗小、纹波大&#xff09;4.TPS54331的引脚功能&#xff08;BOOT这里没太看懂&#xff0c;之后回来再看看&#xff09;5.TPS54331的额定值6.TPS54331在test条件下的电气特…

多个配置WebMvcConfigurationSupport失效问题

最近在项目中用类继承WebMvcConfigurationSupport实现拦截器 Configuration RequiredArgsConstructor public class SpringWebSupport extends WebMvcConfigurationSupport {private final ProjectInterceptor projectInterceptor;// 拦截器 //设置拦截器对象和拦截请求Ove…

idea模板的使用(配置xml文件模板)

1. 问题的引出 我们在日常项目中可以发现&#xff0c;sql映射文件和mybatis主配置文件&#xff0c;以及application.yml文件中有很多固定不变的内容&#xff0c;为了方面使用&#xff0c;所以可以把这些xml文件设置为模板 2. 创建模板的步骤 按照图片一步一步进行即可 点击…

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解

【JavaEE】Spring MVC 程序开发要点总结 文章目录 【JavaEE】Spring MVC 程序开发要点总结1. 什么是 Spring MVC1.1 MVC的执行流程1.2 为什么要学Spring MVC1.3 Spring MVC 的学习 2. Spring MVC 的创建和连接2.1 创建2.2 连接2.2.1 RestController注解2.2.2 RequestMapping注解…