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到指针上
相关新闻
- 2023-04-16 2台电脑怎么共享(2台电脑怎么共享
- 2023-04-16 主板检测卡代码(电脑主板检测卡代
- 2023-04-16 dnf未响应(dnf未响应老是上不去)
- 2023-04-16 ppoe(pppoe拨号上网)
- 2023-04-16 网速不稳定(网速不稳定是路由器的
- 2023-04-16 wds状态(Wds状态成功)
- 2023-04-16 光标键(光标键不动了怎么办)
- 2023-04-16 电脑提速(电脑提速100倍的方法)
- 2023-04-16 切换用户(切换用户怎么切换回来
- 2023-04-16 数据包是什么(产品数据包是什么
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
