WRY

Where Are You?
You are on the brave land,
To experience, to remember...

0%

一些实用的Cpp类

代码将会持续更新,在此就放仓库代码链接了

基础

基础类

‼️基础版本的Human类,包含如下的部分:

  • 构造函数

    • 默认构造函数
    • 带参数的构造函数
    • 拷贝构造函数
    • 移动构造函数
  • 赋值函数

    • 拷贝赋值函数
    • 移动赋值函数
  • 友元函数

  • 重载运算符

    不能重载的运算符只有5个: . 成员访问运算符 .* 成员指针访问运算符 :: 域运算符 sizeof 长度运算符 ?: 条件运算符

设计模式

单实例

C++中static对象的初始化

  • non-local static object,在main函数之前进行初始化,单线程模式,单多个模块之间的初始化顺序是随机的。
  • local static object,发生在控制流第一次到达的时候,在c++11之前是线程不安全的,在c++11之后是线程安全的。

在类中函数外被static声明的变量,不会被初始化

工厂模式

参考 知乎小林

  • 简单工厂。通过枚举类型创建类,通过虚函数调用自定义方法

  • 方法工厂,通过不同的derived class的创建方法,创建不同类别的鞋,省去了枚举类型的办法

  • 抽象工厂,在方法工厂的基础上,让一个Factory可以生产多个产品。

  • 模版工厂,通过一个抽象的模板,一个具体产品的模板实现不同品类的创建

  • ‼️注册模板工厂,在模板工厂里面的ConcreteFactory添加注册动作,将产品注册到单例模式中。

    重新编写了一下这部分的代码,涉及到范型继承,是个很好的学习例子

观察者模式

观察者设计模式

观察者模式分为两大部分组成,一部分是Subject,另一部分是Observer。

  • Subject中包含了Observer对象的数组

  • Observer中包含了指向Subject的指针

工作原理是,Subject中包含一个变量,在修改变量之后,Subject可以调用notify函数,遍历执行所有Observer对象的update函数,而update函数会根据subject中变量的内容做出差异性的动作。