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

  • 1.Static使用
    • Static本质
    • Static使用
      • Static使用举例-单例模式
      • Static使用举例-单例模式(改进)
  • 2.模板使用
    • Class Template类模板
    • function template 函数模板
  • 3.命名空间使用
  • 额外细节
  • 4.复合(**has a**)
    • 4.1定义
    • 4.2复合关系下 类内存大小的计算
    • 4.3复合关系下 类中构造、析构顺序
    • 4.4复合+继承
  • 5.委托
    • 5.1 委托实例( 委托+继承)
    • 5.2委托+继承
      • 5.2.1 Composite
      • 5.2.2 Prototype

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的。


侯捷老师-02面向对象高级编程相关推荐

  1. 侯捷老师-01面向对象高级编程

    侯捷老师-01面向对象高级编程 01面向对象高级编程 1.编程习惯 总结 2.三大函数 2.1 拷贝构造函数.拷贝赋值函数.析构函数(带有指针的类) 2.2 构造函数.析构函数 局部变量.全局变量 3 ...

  2. 【C++】侯捷:C++面向对象高级编程(上)

    C++面向对象高级编程(上) 文章目录 C++面向对象高级编程(上) 一.学习目标 1.1 关于C++ 1.1.1 C++的历史 1.1.2 C++演化 1.1.3 C vs C++ 二. C++类的 ...

  3. 【侯捷】C++面向对象高级编程(上)

    一.C++编程简介 1.1 目标 培养正规的.大气的编程习惯 以良好的方式编写C++ class [Object Based(基于对象)] class without pointer members ...

  4. 侯捷C++课程笔记02: 面向对象高级编程(下)

    本笔记根据侯捷老师的课程整理而来:C++面向对象高级编程(下) pdf版本笔记的下载地址: 笔记02_面向对象高级编程(下),排版更美观一点(访问密码:3834) 侯捷C++课程笔记02: 面向对象高 ...

  5. 侯捷老师 c++面向对象编程(上)

    (本博客是笔者根据侯捷老师的课程进行的总结,便于自己复习,也分享于网上,便于和更多人学习交流,若有侵权,请告删,若有误,请不吝赐教)(图来自于pdf文档,需要的朋友可以在评论区留言) 主要分为两章: ...

  6. 一、C++面向对象高级编程(上) (侯捷)

    侯捷 C++八部曲笔记汇总 - - - 持续更新 ! ! ! 一.C++ 面向对象高级开发 1.C++面向对象高级编程(上) 2.C++面向对象高级编程(下) 二.STL 标准库和泛型编程 1.分配器 ...

  7. c++面向对象高级编程 总目录

    本文是对学习侯捷视频 c++面向对象高级编程系列博客的目录总索引. c++面向对象高级编程 学习一 不带指针的类: 访问私有成员变量的方式,内联inline,常量成员函数,构造函数,值传递,引用传递, ...

  8. 侯捷C++课程笔记01: 面向对象高级编程(上)

    本笔记根据侯捷老师的课程整理而来:C++面向对象高级编程(上) pdf版本笔记的下载地址: 笔记01_面向对象高级编程(上),排版更美观一点(访问密码:3834) 侯捷C++课程笔记01: 面向对象高 ...

  9. 侯捷面向对象高级编程(二)

    侯捷面向对象高级编程(二) 转换函数 转换函数没有返回值,返回值就是double即函数名,不需要自己写 因为转换函数一般不会改变其中内容,所以要加const限定 两条路都可以走,就回产生歧义,报错 e ...

最新文章

  1. python 去除list 里面的重复元素
  2. hibernate延迟加载(get和load的区别)
  3. elasticsearch使用指南之Elasticsearch Document Index API详解、原理与示例
  4. 导致定时器失效_IIS进程回收导致定时器失效的解决方法(CMD命令)
  5. python类私有函数_python-面向对象-14-私有方法
  6. python3接收、解析邮件
  7. 2018年云栖社区值得订阅的11个精选技术期刊!
  8. 中国互联网安全大会将召开 网络安全再获关注
  9. DJango 多条件查询结果分页
  10. 吴恩达机器学习logistic回归作业(python实现)
  11. mac上使用终端生成RSA公钥和密钥
  12. session cookie区别 客户端存储
  13. SpringBoot 系列
  14. GIF图片批量改JPG格式
  15. kubernetes networkpolicy网络策略详解
  16. C语言中进入无限循环的三种方法
  17. Product Requirement Document
  18. 牛顿迭代法求平方根原理
  19. 手机玩游戏卡顿怎么办。
  20. 我的读书笔记 -《人性的弱点》

热门文章

  1. 数值计算方法【学习笔记】——函数基本逼近之插值逼近
  2. offsetHeight
  3. 堆——“数据结构与算法”
  4. PPT2007计算机模块试题,2015年计算机职称考试PPt2007模拟题
  5. Error in v-on handler: “TypeError: this is not a function“
  6. KUKA机器人信息编程—信息类型介绍
  7. 震撼你的思维:老外是怎么跟我们做生意的(上)
  8. failed to run cuBLAS routine cublasSgemm_v2: CUBLAS_STATUS_EXECUTION_FAILED Blas GEMM launch failed
  9. 群主发普通红包和手气红包
  10. 阅读Improving Convolutional Networks with Self-Calibrated Convolutions