侯捷老师-02面向对象高级编程

1.Static使用

Static本质

在这里插入图片描述

  1. 正常对象和函数:非静态对象在调用成员函数的时候,会返回自身指针,函数也需要通过指针才能找到对应对象,并对其进行处理。
  2. 静态数据成员和静态成员函数:
    1.静态成员没有“this”指针。
    2.静态成员函数只能对静态数据成员进行数据操作。(不接收“this”指针)

Static使用

在这里插入图片描述
  Static的两种使用方式:

  1. 通过类对象进行调用;
  2. 通过类名调用
      注意类结构体后一定要对静态成员进行“初始化”。
Static使用举例-单例模式

  单例模式的构造函数在被放在“私有”下。
在这里插入图片描述

  • 静态成员只能被静态成员函数调用,因此静态成员函数是唯一和外界沟通的接口。只有静态成员被静态成员函数调用后,才能调用其他函数。
  • 由于“a”静态成员对象一直放在“private”下,因此就算不是该类,也一直存在这个对象(占用内存)。
Static使用举例-单例模式(改进)

  对于在没有使用该类还存在一个对象内存的情况,进行改善。
在这里插入图片描述
  将静态成员在静态成员函数中进行构造,在没有调用这个静态成员函数的情况下,不会创造该类对象。

2.模板使用

Class Template类模板

在这里插入图片描述

function template 函数模板

在这里插入图片描述

  • 编译器自动对函数模板进行类型推导。
  • 上面两个模板使用“typename”或“class”都可以。

3.命名空间使用

在这里插入图片描述 命名空间“std”可以自己命名,防止和别人代码冲撞。代码最开始包含需要的命名空间。

  • 使用命令
  • 使用声明:选择性使用要包含的代码
  • 什么都不加

额外细节

在这里插入图片描述

4.复合(has a

4.1定义

  在A类中使用B类作为成员对象。流程图表示为实心菱形
在这里插入图片描述
在这里插入图片描述

4.2复合关系下 类内存大小的计算

在这里插入图片描述

4.3复合关系下 类中构造、析构顺序

在这里插入图片描述

4.4复合+继承

在这里插入图片描述
  由内而外的构造,同理析构由外而内的析构。

5.委托

  设计模式之一:pimpl。左图是对外接口,右图是具体的实现操作。该模式能实现在改变右边(操作内容)的同时,不影响左边,不影响客户端。由于左边是指针,因此能够动态的指向除右边以外的别的类实现,更有弹性。
在这里插入图片描述

  • a、b、c三个指针是左边的rep指针,三指针共享一个内存。
  • 虚线圆圈代表右边的代码。
  • 如若a、b、c有想改变内容,重新copy一份给它该。

5.1 委托实例( 委托+继承)

  同一份数据使用多个和窗口观察。在这里插入图片描述在这里插入图片描述

5.2委托+继承

5.2.1 Composite

  有名设计模式:Composite在这里插入图片描述

5.2.2 Prototype

  构造函数一定是私有的,不能让外部访问。其中有参构造可以是protect也可以是private的。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值