随笔分类 -  C++

摘要:一、简介 1. 定义 表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。 2. 应用场景 (1)对象结构比较稳定,但经常需要在此对象结构上定义新的操作。 (2)希望在不修改原有类的前提下,实现对该对象内部的一些操作。 3. 优点 (1)可以通过增 阅读全文
posted @ 2019-03-24 22:33 CompileLife 阅读(182) 评论(0) 推荐(0)
摘要:一、简介 1. 定义提供一种方法顺序访问一个聚合对象中各个元素,而又不需要暴露该对象的内部表示。2. 应用场景1)访问一个聚合对象的内容而无需暴露它的内部表示;2)提供对聚合对象的多种遍历;3)为遍历不同的聚合结构提供一个统一的接口,即支持多态迭代。3. 优点1)简化了类的聚合接口;2)封装了对象的 阅读全文
posted @ 2019-02-16 13:31 CompileLife 阅读(198) 评论(0) 推荐(0)
摘要:一、简介1. 定义 解释器模式(Interpreter),给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。2. 应用场景本模式适用于处理运算式等字符串的解析操作。3. 优点提供灵活的表达式解析处理方式,通过封装的对外接口,调用者可以不再关心具体的表达式 阅读全文
posted @ 2019-01-30 20:48 CompileLife 阅读(395) 评论(0) 推荐(0)
摘要:一、简介 模板设计模式的设计思路比较简单,核心是将不变的逻辑放在基类中处理,在子类中使用虚函数实现变动的方法。它是开发人员使用很频繁的一种模式,往往在代码重构提取基类的过程中就会使用到这种设计模式的思路。 1. 模板设计模式类图 如上图,抽象父类用于实现软件功能中的算法的框架,子类差异化的实现算法流 阅读全文
posted @ 2019-01-13 22:37 CompileLife 阅读(124) 评论(0) 推荐(0)
摘要:1. 在C++中,如果在类的构造函数中调用虚函数时,使用的是静态绑定。2. 建造者模式让对象的表示与构建相分离。一、简介建造者模式是当创建复杂对象的流程应该独立与该对象的组成部分以及他们的装配方式时适用的模式。本模式使得同样的构建过程可以创建不同的对象。1. 优点:1)隔离了构建的步骤和具体的实现, 阅读全文
posted @ 2019-01-06 21:19 CompileLife 阅读(170) 评论(0) 推荐(0)
摘要:一、简介1. 定义用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。2. 应用场景适用于系统中大量的对象需要相互的依赖,并且彼此间的依赖关系复杂混乱,此时在重构过程中,可以用一个中间类来管理这些对象之间的依赖关系。3.优缺点 阅读全文
posted @ 2019-01-02 22:14 CompileLife 阅读(212) 评论(0) 推荐(0)
摘要:一、什么是状态模式 1. 当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化。 状态模式主要是为了消除庞大的条件分支语句,将各种状态 阅读全文
posted @ 2018-12-22 14:37 CompileLife 阅读(186) 评论(0) 推荐(0)
摘要:外观模式较为简单,其类图如下: 外观模式的使用场景分为三个阶段; 首先,在设计初期,应该有意识的将不同的两个层分离; 其次,在开发阶段,子系统往往由于不断的重构演化变得越来越复杂,增加外观Facade可以提供一个简单的接口,减少他们之间的依赖; 第三,在维护一个遗留的大型系统的时候,可能这个系统已经 阅读全文
posted @ 2018-12-22 14:34 CompileLife 阅读(132) 评论(0) 推荐(0)
摘要:观察者模式 阅读全文
posted @ 2018-12-16 11:31 CompileLife 阅读(193) 评论(0) 推荐(0)
摘要:原型模式 阅读全文
posted @ 2018-12-07 09:48 CompileLife 阅读(249) 评论(0) 推荐(0)
摘要:一、何为装饰模式 1. 定义 顾名思义,装饰模式就是为原有的对象添加不同的装饰,使得原有对象具备更加完善的功能。 2. 应用场合 在原有代码基础上进行重构或者添加一些新的职责时,为了尽可能的不修改原有代码或者提高原有类的复杂度,可以使用装饰者模式。装饰者模式可以提供以下功能: 1)在不影响类的其他对 阅读全文
posted @ 2018-11-25 21:34 CompileLife 阅读(167) 评论(0) 推荐(0)
摘要:一、单例 1. 内部变量使用规则: 关于多个线程同时调用单例模式的对象,该对象中方法的局部变量是否会受多个线程的影响 对于那些会以多线程运行的单例类,例如Web应用中的Servlet,每个方法中对局部变量的操作都是在线程自己独立的内存区域内完成的,所以是线程安全的。 对于成员变量的操作,可以使用Th 阅读全文
posted @ 2018-11-18 22:04 CompileLife 阅读(238) 评论(0) 推荐(0)
摘要:函数的内存分配 阅读全文
posted @ 2018-11-13 21:52 CompileLife 阅读(2820) 评论(0) 推荐(0)
摘要:C++中的关键字static有两种用法,分别为面向过程编程的static和面向对象的static。 ·static在面向过程编程中的应用 1. 在全局变量前加上static关键字,该全局变量被声明为静态全局变量,这样使得该变量有了以下的特性: 1)该变量的内存分配在全局数据区域; 2)在声明它的整个 阅读全文
posted @ 2017-12-23 16:43 CompileLife 阅读(227) 评论(0) 推荐(0)
摘要:常量指针与指针常量是两个很容易被混淆的概念,他们的核心是const关键字,const限定一个变量不允许被改变。const在一定程度上可以提高程序的安全性和可靠性。 一、常量指针 顾名思义,是一个被常量修饰的指针,意味着const去修饰一个*p,所以常量指针的本质是指针,表示这个指针时一个指向常量的指 阅读全文
posted @ 2017-12-09 16:19 CompileLife 阅读(810) 评论(0) 推荐(0)
摘要:引自:https://www.cnblogs.com/stonecrazyking/archive/2006/09/23/512552.html 看到一篇总结很到位的文章,记录一下。 时常在cpp的代码之中看到这样的代码: #ifdef __cplusplus extern "C" { #endif 阅读全文
posted @ 2017-11-28 10:45 CompileLife 阅读(26806) 评论(0) 推荐(3)
摘要:标准库 C++标准库,包括了STL容器,算法和函数等。 C++ Standard Library:是一系列类和函数的集合,使用核心语言编写,也是C++ISO自身标准的一部分。 Standard Template Library:标准模板库 C POSIX library : POSIX系统的C标准库 阅读全文
posted @ 2017-11-26 22:05 CompileLife 阅读(706) 评论(0) 推荐(0)
摘要:1. #pragma once这个宏有什么作用? 为了避免同一个头文件被包含(include)多次,C/C++中有两种宏实现方式:一种是#ifndef方式;另一种是#pragma once方式。在能够支持这两种方式的编译器上,二者并没有太大的区别。但两者仍然有一些细微的区别。 2. 两者各有何特点? 阅读全文
posted @ 2017-11-26 21:39 CompileLife 阅读(187) 评论(0) 推荐(0)
摘要:typedef函数指针的声明与其他类型的声明有所不同,主要遵守右左法则,具体的解释如下: 1.1 解读的原则 右左原则: 右左法则:首先从最里面的圆括号看起,然后往右看,再往左看。每当遇到圆括号时,就应该掉转阅读方向。一旦解析完圆括号里面所有的东西,就跳出圆括号。重复这个过程直到整个声明解析完毕。 阅读全文
posted @ 2017-11-23 14:47 CompileLife 阅读(4926) 评论(1) 推荐(0)