C++
文章平均质量分 71
6Chpter
这个作者很懒,什么都没留下…
展开
-
C++设计模式----模板方法模式
由遇到的问题引出模板方法模式在面向对象系统的分析与设计过程中经常会遇到这样一种情况:对于某一个业务逻辑(算法实现)在不同的对象中有不同的细节实现,但是逻辑(算法)的框架(或通用的应用算法)是相同的。模板方法提供了这种情况的一个实现框架。模板方法模式是采用继承的方式实现这一点:将逻辑(算法)框架放在抽象基类中,并定义好细节的接口,子类中实现细节。【注释 1】【注释 1】:Stra转载 2014-08-28 22:35:21 · 502 阅读 · 0 评论 -
STL之常用算法
知识铺垫 函数对象-仿函数:1.函数对象(仿函数)是一个类,不是一个函数。2.函数对象(仿函数)重载了”()”操作符使得它可以像函数一样调用函数对象的特点:1.函数对象也可以有参数和返回值2.函数对象超出函数概念,可以保存函数调用状态3.函数对象做参数和返回值例子:#include<iostream>#include<algorithm>#include<vector>#include<fun原创 2016-05-03 16:42:14 · 753 阅读 · 0 评论 -
C++虚析构函数
如果基类中存在一个指向动态分配内存的成员变量,并且基类的析构函数中定义了释放该动态分配内存的代码,那么就应该将基类的析构函数声明为虚函数,这样可以将子类对象中的开辟的动态空间回收。#include <iostream>using namespace std;//基类class Base{private: int *a;public: Base(); virtual原创 2016-04-18 16:02:38 · 442 阅读 · 0 评论 -
指针数组、数组指针、二维数组动态分配内存
C 二维数组动态分配和释放已知第二维 char (*a)[N];//指向数组的指针 a = (char ()[N])malloc(sizeof(char ) * m); printf(“%d\n”, sizeof(a));//4,指针 printf(“%d\n”, sizeof(a[0]));//N,一维数组 free(a); 已知第一维 char* a[M];//指针的数组 in原创 2016-03-22 22:59:02 · 9768 阅读 · 2 评论 -
C++设计模式----建造者模式
由遇到的问题引出建造者模式生活中有着很多的建造者的例子,个人觉得大学生活就是一个建造者模式的最好体验:要完成大学教育,一般将大学教育过程分成 4 个学期进行,因此没有学习可以看作是构建完整大学教育的一个部分构建过程,每个人经过这 4 年的(4 个阶段)构建过程得到的最后的结果不一样,因为可能在四个阶段的构建中引入了很多的参数(每个人的机会和际遇不完全相同)。建造者模式要解决的也正是转载 2014-08-29 16:03:55 · 430 阅读 · 0 评论 -
C++设计模式----观察者模式
由遇到的问题引出观察者模式观察者模式应该可以说是应用最多、影响最广的模式之一,因为 观察者的一个实例 Model/View/Control(MVC)结构在系统开发架构设计中有着很重要的地位和意义,MVC实现了业务逻辑和表示层的解耦。个人也认为 观察者模式是软件开发过程中必须要掌握和使用的模式之一。在 MFC 中,Doc/View(文档视图结构)提供了实现 MVC 的框架结构(有一个从设计模转载 2014-08-29 16:05:44 · 577 阅读 · 0 评论 -
C++设计模式----外观模式
由遇到的问题引出外观模式举一个生活中的小例子,大凡开过学或者毕过业的都会体会到这样一种郁闷:你要去 n个地方办理 n 个手续(现在大学合并后就更加麻烦,因为可能那 n 个地方都隔的比较远)。但是实际上我们需要的就是一个最后一道手续的证明而已,对于前面的手续是怎么办的、到什么地方去办理我们都不感兴趣。实际上在软件系统开发中也经常回会遇到这样的情况,可能你实现了一些接口(模块),而转载 2014-08-28 22:44:23 · 494 阅读 · 0 评论 -
C++设计模式----工厂模式
由遇到的问题引出工厂模式在面向对象系统设计中经常可以遇到以下的两类问题:◆ 1.为了提高内聚(Cohesion)和松耦合(Coupling),我们经常会抽象出一些类的公共接口以形成抽象基类或者接口。这样我们可以通过声明一个指向基类的指针来指向实际的子类实现,达到了多态的目的。这里很容易出现的一个问题 n 多的子类继承自抽象基类,我们不得不在每次要用到子类的地方就编写诸如 new ×××转载 2014-08-27 10:33:33 · 406 阅读 · 0 评论 -
C++设计模式----策略模式
由遇到的问题引出策略模式策略模式和 Template 模式要解决的问题是相同(类似)的,都是为了给业务逻辑(算法)具体实现和抽象接口之间的解耦。策略模式将逻辑(算法)封装到一个类(Context)里面,通过组合的方式将具体算法的实现在组合对象中实现,再通过委托的方式将抽象接口的实现委托给组合对象实现。State 模式也有类似的功能,他们之间的区别将在讨论中给出。模式选择策略模式转载 2014-08-27 10:57:46 · 533 阅读 · 0 评论 -
C++设计模式----装饰模式
由遇到的问题引出的装饰模式在 OO 设计和开发过程,可能会经常遇到以下的情况:我们需要为一个已经定义好的类添加新的职责(操作),通常的情况我们会给定义一个新类继承自定义好的类,这样会带来一个问题(将在本模式的讨论中给出)。通过继承的方式解决这样的情况还带来了系统的复杂性,因为继承的深度会变得很深。而装饰提供了一种给类增加职责的方法,不是通过继承实现的,而是通过组合。有关这些内容转载 2014-08-28 22:28:37 · 439 阅读 · 0 评论 -
C++设计模式----代理模式
由遇到的问题引出代理模式至少在以下集中情况下可以用代理模式解决问题:创建开销大的对象时候,比如显示一幅大的图片,我们将这个创建的过程交给代理去完成,GoF 称之为虚代理(Virtual Proxy);为网络上的对象创建一个局部的本地代理,比如要操作一个网络上的一个对象(网络性能不好的时候,问题尤其突出),我们将这个操纵的过程交给一个代理去完成,GoF 称之为远程代理(Remote Pr转载 2014-08-28 22:31:15 · 561 阅读 · 0 评论 -
C++设计模式----原型模式
由遇到的问题引出原型模式关于这个模式,突然想到了小时候看的《西游记》,齐天大圣孙悟空再发飙的时候可以通过自己头上的 3 根毛立马复制出来成千上万的孙悟空,对付小妖怪很管用(数量最重要)。原型模式也正是提供了自我复制的功能,就是说新对象的创建可以通过已有对象进行创建。在 C++中拷贝构造函数(Copy Constructor)曾经是很对程序员的噩梦,浅层拷贝和深层拷贝的魔魇也是很多程序员转载 2014-08-28 22:33:19 · 612 阅读 · 0 评论 -
STL学习总结之容器
STL介绍STL(Standard Template Library,标准模板库),是惠普实验室开发的一系列软件的统称。现在主要出现在 c++中,但是在引入 c++之前该技术已经存在很长时间了。STL 从广义上分为: 容器(container) 算法(algorithm) 迭代器(iterator),容器和算法之间通过迭代器进行无缝连接。STL 几乎所有的代码都采用了模板类或者模板函数,这相比传统的原创 2016-05-01 20:44:47 · 3790 阅读 · 0 评论