侯捷老师-02面向对象高级编程
侯捷老师-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.静态成员没有“this”指针。
2.静态成员函数只能对静态数据成员进行数据操作。(不接收“this”指针)
Static使用
Static的两种使用方式:
- 通过类对象进行调用;
- 通过类名调用
注意类结构体后一定要对静态成员进行“初始化”。
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面向对象高级编程相关推荐
- 侯捷老师-01面向对象高级编程
侯捷老师-01面向对象高级编程 01面向对象高级编程 1.编程习惯 总结 2.三大函数 2.1 拷贝构造函数.拷贝赋值函数.析构函数(带有指针的类) 2.2 构造函数.析构函数 局部变量.全局变量 3 ...
- 【C++】侯捷:C++面向对象高级编程(上)
C++面向对象高级编程(上) 文章目录 C++面向对象高级编程(上) 一.学习目标 1.1 关于C++ 1.1.1 C++的历史 1.1.2 C++演化 1.1.3 C vs C++ 二. C++类的 ...
- 【侯捷】C++面向对象高级编程(上)
一.C++编程简介 1.1 目标 培养正规的.大气的编程习惯 以良好的方式编写C++ class [Object Based(基于对象)] class without pointer members ...
- 侯捷C++课程笔记02: 面向对象高级编程(下)
本笔记根据侯捷老师的课程整理而来:C++面向对象高级编程(下) pdf版本笔记的下载地址: 笔记02_面向对象高级编程(下),排版更美观一点(访问密码:3834) 侯捷C++课程笔记02: 面向对象高 ...
- 侯捷老师 c++面向对象编程(上)
(本博客是笔者根据侯捷老师的课程进行的总结,便于自己复习,也分享于网上,便于和更多人学习交流,若有侵权,请告删,若有误,请不吝赐教)(图来自于pdf文档,需要的朋友可以在评论区留言) 主要分为两章: ...
- 一、C++面向对象高级编程(上) (侯捷)
侯捷 C++八部曲笔记汇总 - - - 持续更新 ! ! ! 一.C++ 面向对象高级开发 1.C++面向对象高级编程(上) 2.C++面向对象高级编程(下) 二.STL 标准库和泛型编程 1.分配器 ...
- c++面向对象高级编程 总目录
本文是对学习侯捷视频 c++面向对象高级编程系列博客的目录总索引. c++面向对象高级编程 学习一 不带指针的类: 访问私有成员变量的方式,内联inline,常量成员函数,构造函数,值传递,引用传递, ...
- 侯捷C++课程笔记01: 面向对象高级编程(上)
本笔记根据侯捷老师的课程整理而来:C++面向对象高级编程(上) pdf版本笔记的下载地址: 笔记01_面向对象高级编程(上),排版更美观一点(访问密码:3834) 侯捷C++课程笔记01: 面向对象高 ...
- 侯捷面向对象高级编程(二)
侯捷面向对象高级编程(二) 转换函数 转换函数没有返回值,返回值就是double即函数名,不需要自己写 因为转换函数一般不会改变其中内容,所以要加const限定 两条路都可以走,就回产生歧义,报错 e ...
最新文章
- python 去除list 里面的重复元素
- hibernate延迟加载(get和load的区别)
- elasticsearch使用指南之Elasticsearch Document Index API详解、原理与示例
- 导致定时器失效_IIS进程回收导致定时器失效的解决方法(CMD命令)
- python类私有函数_python-面向对象-14-私有方法
- python3接收、解析邮件
- 2018年云栖社区值得订阅的11个精选技术期刊!
- 中国互联网安全大会将召开 网络安全再获关注
- DJango 多条件查询结果分页
- 吴恩达机器学习logistic回归作业(python实现)
- mac上使用终端生成RSA公钥和密钥
- session cookie区别 客户端存储
- SpringBoot 系列
- GIF图片批量改JPG格式
- kubernetes networkpolicy网络策略详解
- C语言中进入无限循环的三种方法
- Product Requirement Document
- 牛顿迭代法求平方根原理
- 手机玩游戏卡顿怎么办。
- 我的读书笔记 -《人性的弱点》
热门文章
- 数值计算方法【学习笔记】——函数基本逼近之插值逼近
- offsetHeight
- 堆——“数据结构与算法”
- PPT2007计算机模块试题,2015年计算机职称考试PPt2007模拟题
- Error in v-on handler: “TypeError: this is not a function“
- KUKA机器人信息编程—信息类型介绍
- 震撼你的思维:老外是怎么跟我们做生意的(上)
- failed to run cuBLAS routine cublasSgemm_v2: CUBLAS_STATUS_EXECUTION_FAILED Blas GEMM launch failed
- 群主发普通红包和手气红包
- 阅读Improving Convolutional Networks with Self-Calibrated Convolutions