随笔分类 -  C/C++

摘要:在编译原理的实验时,用到了大量的C++的字符串相关知识,很多基础知识已经模糊。在写一处string赋值时,一直出现错误 问题是假如有一个字符串,定义string A="",要逐个字符给A赋值开始的我是这样的写的 string A; for(int i;i<n;i++) { A[i]=a[i]; // 阅读全文
posted @ 2020-06-14 17:35 夏小皮 阅读(282) 评论(0) 推荐(0)
摘要:在C++中,我们知道多态很大程度上依赖于虚函数,而虚函数的地址存放于虚函数表之中。运行期多态就是通过虚函数和虚函数表实现的。类的对象内部会有指向类内部的虚表地址的指针。通过这个指针调用虚函数。虚函数的调用会被编译器转换为对虚函数表的访问。虚函数表就像一个地图一样,指明了实际所应该调用的函数。如果一个 阅读全文
posted @ 2020-04-26 10:56 夏小皮 阅读(2466) 评论(0) 推荐(0)
摘要:门面模式,是指提供一个统一的接口去访问多个子系统的多个不同的接口,它为子系统中的一组接口提供一个统一的高层接口。使得子系统更容易使用。最核心的目的:简化子系统,简化客户使用,屏蔽多个子系统。 此外门面类不参与子系统的业务逻辑,只是提供访问一个子类的途径而已,否则会产生倒依赖 缺点:不符合开闭原则。所谓的开闭原则是软件工程里面一个最基本的原则:对扩展开放,对修改关闭。换句话说,你的系统... 阅读全文
posted @ 2020-04-24 15:11 夏小皮 阅读(169) 评论(0) 推荐(0)
摘要:装饰器模式(Decorator Pattern):允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。 装饰者模式适用场景: (1)以动态的方式给对象添加职责。 (2)处理那些可以撤销的职责。 (3)当采用生成子类的方法进... 阅读全文
posted @ 2020-04-21 13:27 夏小皮 阅读(1880) 评论(0) 推荐(0)
摘要:定义:将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能在一起工作的那些类可以一起工作。 客户端需要一个target(目标)接口,但是不能直接重用已经存在的adaptee(适配者)类,因为它的接口和target接口不一致,所以需要adapter(适配器)将adaptee转换为target接口。前提是target接口和已存在的适配者adaptee类所做的事情是相同或相... 阅读全文
posted @ 2020-04-21 13:24 夏小皮 阅读(520) 评论(0) 推荐(0)
摘要:状态模式: 在状态模式(State Pattern)中,类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。 意图:允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类。 何时使用:代码中包含大量与对象状态有关的条件语句。 如何解决:将各种具体的状态类抽象出来。 类... 阅读全文
posted @ 2020-04-21 13:16 夏小皮 阅读(242) 评论(0) 推荐(0)
摘要:工厂设计模式,顾名思义,就是用来生产对象的,在JVAA或C++中,万物皆对象,这些对象都需要创建,如果创建的时候直接new该对象,就会对该对象耦合严重,假如我们要更换对象,所有new对象的地方都需要修改一遍,这显然违背了软件设计的开闭原则,如果我们使用工厂来生产对象,我们就只和工厂打交道就可以了,彻 阅读全文
posted @ 2020-04-17 20:28 夏小皮 阅读(424) 评论(0) 推荐(0)
摘要:观察者模式又被称为发布订阅模式。它定义了对象之间一对多的依赖,当一个对象状态发生改变时,它的所有依赖者都会收到通知并自动更新相关内容。即建立一个(Subject类)对多(Observer类)的关系,能够使得当Subject的对象变化的时候,依赖这个的多个Observe的对象实例也能够同步进行相应的改 阅读全文
posted @ 2020-03-19 15:17 夏小皮 阅读(1569) 评论(0) 推荐(2)
摘要:模板模式 作用:定义一个操作中的算法的骨架。而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。其关键是将通用算法(逻辑)封装在抽象基类中,并将不同的算法细节放到子类中实现。 在我看来,模板模式的好处在于能减少代码段的复用,把公共行为封装到基类中,把行为 阅读全文
posted @ 2020-03-12 20:14 夏小皮 阅读(405) 评论(0) 推荐(0)
摘要:策略模式的定义: 策略模式是指定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。 优点: 1、算法可以自由切换。 2、避免使用多重条件判断。 3、扩展性良好。 缺点: 1、策略类会增多。 2、所有策略类都需要对外暴露。 类图如下: Strateg 阅读全文
posted @ 2020-03-12 17:20 夏小皮 阅读(2081) 评论(0) 推荐(0)
摘要:多态是C++中很关键的一部分,在面向对象程序设计中的作用尤为突出,其含义是具有多种形式或形态的情形,简单来说,多态:向不同对象发送同一个消息,不同的对象在接收时会产生不同的行为。即用一个函数名可以调用不同内容的函数。 多态可分为静态多态与动态多态,静态多态的实现在于静态联编,关联出现在编译阶段而非运 阅读全文
posted @ 2020-02-28 10:00 夏小皮 阅读(459) 评论(0) 推荐(0)