U盘PE| w764位旗舰版下载 | U盘装win7系统 | U盘启动 |win7pe | win10下载 |加入收藏土豆PE官网U盘PE,U盘装win7系统,win7pe,U盘启动,U盘装系统,w764位旗舰版下载站!
当前位置:主页 > 帮助中心 > 常见问题解答 >

10、C++设计模式与泛型编程

来源:http://www.tudoupe.com时间:2022-06-26

文章目录

  • 一、软件设计模式
  • 单音
  • 3.观察者模型
  • 适配器模式
    • 1-多继承实现适配器
    • 2 - 实现适配器的组合方法
  • 五、泛型编程
    • 1-一般程序设计思想
    • 2 - 通用编程的简单例子
    • 3-一般编程规范
  • 摘要1: Void*, NULL和 nullptr
  • 总结2:类型转换
    • 1 - C的类型转换
    • 2 - C++类型转换

一、软件设计模式

  • 模型描述一个持续的问题和问题的解决方法;模型是从设计经验中总结的一些常见问题的一般解决方法;例如,一个实例模型,一个观察模型等等。
  • 软件模型:23种常用的面向对象设计模型、反模型和企业应用架构模型等。
  • 建议书:设计模型:面向对象软件的基础(GOF)

单音

  • 一个例子是:有时我们需要整个程序中一个单个实例

  • 例子模式常见场景: 系统日志 、 Windows资源管理 、 数据库分配键操作等.
    在这里插入图片描述

  • 实现思路

    • 1.Singleton有一个私人构造器,确保用户不能直接通过新实例使用它
    • 2.包含静态的私人成员变量实例和静态的公共方法实例();

Singleton.h

Singleton.cpp: 如果你要去这儿Singleton* Singleton::This = nullptr;修改为Singleton* Singleton::This = new Singleton();就是饿汉式单例

Test.cpp

3.观察者模型

  • 观察者模式是什么:观察者需要直接订阅目标时间;目标发送改变内容的事件后,观察者直接接收该事件并相应作出回应;对象通常是两个关系
  • 在场景中通常使用观察模式:在各种MVC的框架中,模型的更改被通知,几乎所有类型的视图存在在这个模式
  • 观众模型实现了解开问题责任、解开可观察和可观察的抽象、解开抽象和实体的概念

Observer.h

Observerable.h

Observerable.cpp

Test.cpp

适配器模式

  • 适配器简介
    • 适配器将类接口转换为客户端预期的另一个接口
    • 使用适配器防止类由于接口互不兼容而一起工作
    • 适配器模式的动机在于如果你能改变接口,你可以重新使用现有的软件

1-多继承实现适配器

2 - 实现适配器的组合方法

五、泛型编程

1-一般程序设计思想

  • 泛型编程概述
    • 如果面向对象函数是通过中间层交换抽象函数的函数,那么通用函数是更直接的抽象函数,因为中间层没有损失效率
    • 与面向对象的动态周期多项式不同,通用编程是一种静态周期多项式,通过编译器生成最直接的代码
    • 泛型编程可以从特定类型、结构中分离算法,并尽可能地重用代码
    • 模板编程的困难主要在于编译器的理解,我们需要知道如何帮助编译器提供生成代码所需的信息

2 - 通用编程的简单例子

3-一般编程规范

  • 我们希望慈善*的比较将按照我们自己的规则计算,并能够在那时加以专门化
  • 类型不一致的规格,假设要求我们知道返回的int类型,但参数1和参数2是不确定的类型,可能相同或不同

在这里插入图片描述

摘要1: Void*, NULL和 nullptr

  • 在C语言中,NULL通常用于处理空指针:#define NULL ((void*)0)
  • 在C++语言中,NULL定义为0
  • C++11标准要求:nullptr用于替换(void*)0,而NULL只代表0

总结2:类型转换

1 - C的类型转换

  • C的类型转换
    • 隐式类型转换:double f = 1.0 / 2;
    • 显示类型转换:double f = double(1) / double(2)
  • C类型转换的问题
    • 任何类型都可以转换,编译器也无法判断它的正确性
    • 难以定位:无法快速定位源代码

2 - C++类型转换

  • const_cast:用于转换指针或引用,删除类型的const属性
  • 常量折叠常数折叠是编译阶段的变量值替换,类似于宏定义
    • 这就是为什么我们看到记忆变为100,但实际打印仍然是10

在这里插入图片描述

  • reinterpret_cast:非常危险;重新解释一个类型,它既不检查指针的内容,也不检查指针类型本身;但是需要在转换匹配前和之后由该类型占用的内存,否则会造成编译错误
  • static_cast:用于基本类型转换,具有继承关系对象与类指针之间的过渡,通过该程序确保转换是安全的,并且不会生成动态转换的类型安全检查费用
  • dynamic_cast:只能用于包含错误函数的类,必须在多状态系统中使用,用于类之间上下转换;如果下转换不合法,返回NULL到指针上

Copyright © 2012-2014 Www.tudoupe.Com. 土豆启动 版权所有 意见建议:tdsky@tudoupe.com

土豆系统,土豆PE,win7系统下载,win7 64位旗舰版下载,u盘启动,u盘装系统,win10下载,win10正式版下载,win10 RTM正式版下载,win8下载,电脑蓝屏,IE11修复,网络受限,4K对齐,双系统,隐藏分区,系统安装不了,U盘装系统,笔记本装系统,台式机装系统,diskgenius运用,GHSOT装系统,U盘修复,U盘技巧,U盘速度,U盘不能格式化,U盘复制发生错误,U盘加密,U盘选购,开机黑屏,蓝屏,进不了系统,上不了网,打不开程序,点击无反应,系统设置,PE个性化,PE添加网络,PE维护系统

点击这里给我发消息