
c++
文章平均质量分 72
alex_xhl
专注软件架构设计,性能分析和优化。
展开
-
c++ 模板函数,类模板,仿函数使用实例代码
1.模板函数 #include using namespace std;template T myMin(T x, T y){ return (x }void main( ){int n1 = 2, n2 = 10;double d1 = 1.5, d2 = 5.6;coutcoutsystem("PAUSE");原创 2015-08-21 23:26:16 · 3153 阅读 · 0 评论 -
设计模式C++学习笔记之三(Singleton单例模式)
单例模式看起来也蛮简单的,就是在系统中只允许产生这个类的一个实例,既然这么简单,就直接贴代码了。更详细的内容及说明可以参考原作者博客:cbf4life.cnblogs.com。3.1.解释main(),大臣CEmperor,需要单例的类说明:很多大臣拜见的皇帝,只有一个。体现在面向对象方面,CEmperor定义一个静态指针,和一个静态函数,私有化构造函数、析构函数、转载 2015-08-04 08:06:47 · 458 阅读 · 0 评论 -
设计模式C++学习笔记之六(Facade门面模式)
Facade门面模式,也是比较常用的一种模式,基本上所有软件系统中都会用到。 GOF 在《设计模式》一书中给出如下定义:为子系统中的一组接口提供一个一致的界面, Facade 模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。简单说,就是将复杂的逻辑封装起来,对外公开简单的接口,由客户程序调用。这里举了一个发送邮件的例子,我们理解为电子邮件吧,普通的邮件应该不需要告诉邮局,我们写的信件内转载 2015-08-04 08:09:05 · 405 阅读 · 0 评论 -
设计模式C++学习笔记之十六(Observer观察者模式)
16.1.解释概念:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。main(),IObservable,被观察者接口CHanFeiZiObservable,被观察者韩非子IObserver,观察者接口CLiSiObserver,观察者李斯CZhouSiObserver观察者周斯转载 2015-08-04 08:14:47 · 421 阅读 · 0 评论 -
设计模式C++学习笔记之十(Builder建造者模式)
建造者模式,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。一段晦涩难懂的文字,实现创建不同表示的方法就是给创建的过程传入创建的参数。详细的还是看代码吧。10.1.解释main(),客户CCarModel,产品模型CBenzModel,奔驰模型CBMWModel,宝马模型ICarBuilder,建造者接口CBenzB转载 2015-08-04 08:11:40 · 490 阅读 · 0 评论 -
设计模式C++学习笔记之七(AbstractFactory抽象工厂模式)
抽象工厂,提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。对于工厂方法来说,抽象工厂可实现一系列产品的生产,抽象工厂更注重产品的组合。看代码:7.1.解释main(),女娲IHuman,产品接口CYellowHuman,抽象产品之一CYellowFemaleHuman,具体产品之一CYellowMaleHuman,具体产品转载 2015-08-04 08:09:47 · 459 阅读 · 0 评论 -
c++ public, protected, private成员变量,成员函数继承和访问规则实例代码
Base.h#ifndef _BASE_H_#define _BASE_H_namespace cplusplustest{class Base{public:Base() {}virtual ~Base() {};public:void publicFunc();public:void setPrivateM原创 2015-08-15 23:04:05 · 2995 阅读 · 0 评论 -
设计模式C++学习笔记之十五(Composite组合模式)
15.1.解释概念:将对象组合成树形结构以表示“部分-整体”的层次结构。Composite使得用户对单个对象和组合的使用具有一致性。main(),客户CCorpNode,抽象基类,实现基本信息CBranchNode,树枝节点,实现Addordinate()函数和GetSubordinate()函数CLeafNode,叶子节点,IsLeaf属性总是“true”转载 2015-08-04 08:14:20 · 440 阅读 · 0 评论 -
设计模式C++学习笔记之十二(Command命令模式)
命令模式,将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。应该是一个比较简单的模式了。 12.1.解释 main(),客户 CInvoker,命令接收者,如项目经理 IGroup,执行者接口 CRequirementGroup,实际执行者之一CPageGroup,实际执行者之二CCodePage,实际转载 2015-08-04 08:12:51 · 460 阅读 · 0 评论 -
使用模板类,模板方法实现switch case功能
#include "iostream"using namespace std;enum EnumValue{One = 100,Two,Three};templatestruct EnumValueUnit{int indexValue;EnumType enumValue;};#define Invalidat原创 2015-08-14 11:24:39 · 2538 阅读 · 0 评论 -
基类的protected成员变量只能被子类继承,在基类之外都不能直接访问基类protected成员变量
class Base{public:Base() {}~Base() {}void setI(int a) {i = a;}int getI() {return i;}protected:int i;};class Child : public Base{public:Child(Base& b){//b.i =原创 2015-08-14 11:12:23 · 4594 阅读 · 0 评论 -
设计模式C++学习笔记之五(Factory Method工厂方法模式)
工厂方法模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。这个例子更详细的内容及说明可以参考原作者博客:cbf4life.cnblogs.com。贴代码了。5.1.解释ma转载 2015-08-04 08:08:17 · 467 阅读 · 0 评论 -
设计模式C++学习笔记之二(Proxy代理模式)
代理,一看名字就知道这只是个中介而已,真实的执行者在代理的后面呢。cbf4life在他的书里提的例子也很有趣,更详细的内容及说明可以参考原作者博客:cbf4life.cnblogs.com。现在贴代码,以方便随用随取。2.1.解释main(),西门庆IKindWomen,接口CWangPo,代理CPanJinLian,实际执行者之一CJiaShi,实转载 2015-08-04 08:06:16 · 447 阅读 · 0 评论 -
设计模式C++学习笔记之一(Strategy策略模式)
无意中,从网上下到一本电子书《24种设计模式介绍与6大设计原则》,很好奇这里有24种设计模式,印象中GOF写的《设计模式》(Design Patterns),好像只有23种吧。运行起来一看,还真挺吸引咱的,里面提到的例子都很有趣。很感谢作者写出这样好的例子来,我的目的是把作者提到的例子用C++来实现。写这本书的作者是:cbf4life,更详细的内容及说明可以参考原作者博客:cbf4life.cnb转载 2015-08-04 08:04:14 · 456 阅读 · 0 评论 -
stl 静态数组初始化vector及pair,vector混合使用
#include "iostream"#include "vector"using namespace std;//静态数组初始化vector, pair和vector混合使用void stlTest(){struct baseStruct {int a;int b;baseStruct(int x, int y) : a(x), b原创 2015-08-12 15:57:57 · 3474 阅读 · 0 评论 -
设计模式C++学习笔记之四(Multition多例模式)
多例模式,这个在GOF的模式设计里没有提到,但在实际工作中确实会用到。更详细的内容及说明可以参考原作者博客:cbf4life.cnblogs.com。4.1.解释main(),客户略说明:和单例基本一样,是有个数限制的单例。如果对于产生的实例个数没有限制,那就不是多例了,和普通的类没有区别。举例:曾经开发过一个从服务端以UDP协议,发送文件到客户端的程序。客转载 2015-08-04 08:07:39 · 1772 阅读 · 0 评论 -
设计模式C++学习笔记之九(Template Method模板方法模式)
模板模式也是相当简单的一种模式,而且是比较常用的。模板模式是定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TemplateMethod使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。cbf4life举的例子是悍马车模型,更详细的例子说明可以参考原作者博客:cbf4life.cnblogs.com。这里只提出C++的设计和实现方法,以方便随用随取。9.1.解释转载 2015-08-04 08:11:09 · 395 阅读 · 0 评论 -
QT 正则表达式
QString pattern("=\\{[0-9]*\\}|=\\{[0-9]*,[0-9]*\\}"); //匹配 ={1} 或 ={122, 2233}QRegExp rx(pattern);bool bi = rx.exactMatch(str);原创 2015-08-19 16:05:56 · 944 阅读 · 0 评论 -
C++语言学习之STL 的组成
C++语言学习之STL 的组成STL有三大核心部分:容器(Container)、算法(Algorithms)、迭代器(Iterator),容器适配器(container adaptor),函数对象(functor),除此之外还有STL其他标准组件。通俗的讲:容器:装东西的东西,装水的杯子,装咸水的大海,装人的教室……STL里的容器是可容纳一些数据的模板类。算法:就是往杯子里倒水,往大海转载 2015-08-19 08:22:30 · 891 阅读 · 0 评论 -
C++:STL标准入门汇总
学无止境!!!第一部分:(参考百度百科) 一、STL简介STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称。它是由Alexander Stepanov、Meng Lee和David R Musser在惠普实验室工作时所开发出来的。现在虽说它主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段转载 2015-08-19 08:25:43 · 1020 阅读 · 0 评论 -
c++ string
C++中string是标准库中一种容器,相当于保存元素类型为char的vector容器(自己理解),这个类提供了相当丰富的函数来完成对字符串操作,以及与C风格字符串之间转换,下面是对string一些总结 一,C语言的字符串在C语言里,对字符串的处理一项都是一件比较痛苦的事情,因为通常在实现字符串的操作的时候都会用到最不容易驾驭的类型——指针。比如下面这个例子:转载 2015-08-18 08:04:38 · 692 阅读 · 0 评论 -
c++模板学习
1. 模板的概念。我们已经学过重载(Overloading),对重载函数而言,C++的检查机制能通过函数参数的不同及所属类的不同。正确的调用重载函数。例如,为求两个数的最大值,我们定义MAX()函数需要对不同的数据类型分别定义不同重载(Overload)版本。//函数1.int max(int x,int y);{return(x>y)?x:y ;}//函数2.转载 2015-08-18 08:00:46 · 648 阅读 · 0 评论 -
设计模式C++学习笔记之十一(Bridge桥梁模式)
桥梁模式,将抽象部分与它的实现部分分离,使它们都可以独立地变化。实现分离的办法就是增加一个类,11.1.解释main(),客户IProduct,产品接口CHouse,房子CIPod,ipodCClothes,服装CNewCorp,桥梁类,MakeMoney()是桥梁方法CNewHouseCorp,只能生产房子,所以构造函数是CHous转载 2015-08-04 08:12:15 · 516 阅读 · 0 评论 -
设计模式C++学习笔记之八(Adapter适配器模式)
适配器模式,使用之处比较特殊,不属于常规设计模式,主要用于不同系统之间的处理。是将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。也是一个比较简单的模式,直接上代码了。看代码:8.1.解释main(),主程序IUserInfo,本系统内接口CUserInfo,本系统内实现类IOut转载 2015-08-04 08:10:32 · 361 阅读 · 0 评论 -
C++中public,protected,private访问小结
第一:private,public,protected的访问范围: private: 只能由该类中的函数、其友元函数访问,不能被任何其他访问,该类的对象也不能访问. protected: 可以被该类中的函数、子类的函数、以及其友元函数访问,但不能被该类的对象访问 public: 可以被该类中的函数、子类的函数、其友元函数访问,也可以由该类的对象访问注:友元函数包括两种:转载 2015-08-15 22:55:20 · 1073 阅读 · 0 评论 -
不错的blog
http://www.cnblogs.com/wanggary/category/294620.html原创 2015-08-04 08:18:47 · 556 阅读 · 0 评论 -
设计模式C++学习笔记之十九(State状态模式)
19.1.解释概念:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。main(),客户CLiftState,电梯状态抽象类CCloseingState,电梯门关闭COpenningState,电梯门打开CRunningState,电梯运行CStoppingState,电梯停止CContext,电梯的控制面板转载 2015-08-04 08:16:53 · 461 阅读 · 0 评论 -
设计模式C++学习笔记之十八(Visitor访问者模式)
18.1.解释概念:表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。main(),客户IVisitor,访问者接口CBaseVisitor,访问者实现类CEmployee,被访问者抽象类CCommonEmployee,被访问者实现类之一CManager,被访问者实现类之二说明:转载 2015-08-04 08:16:12 · 464 阅读 · 0 评论 -
设计模式C++学习笔记之十七(Chain of Responsibility责任链模式)
17.1.解释概念:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。main(),客户IWomen,发出请求者接口CWomen,请求者实现类CHandler,处理请求抽象类CFather,处理请求实现类,责任链之一CHusband,处理请求实现类,转载 2015-08-04 08:15:39 · 538 阅读 · 0 评论 -
设计模式C++学习笔记之十四(Iterator迭代器模式)
14.1.解释概念:提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示。main(),客户IProject,产品接口CProject,产品类IIterator,迭代器接口IProjectIterator,产品迭代器接口CProjectIterator,产品迭代器实现类说明:CProject实现产品类,能够返回一个转载 2015-08-04 08:13:53 · 352 阅读 · 0 评论 -
设计模式C++学习笔记之十三(Decorator装饰模式)
装饰模式,动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。13.1.解释main(),老爸ISchoolReport,成绩单接口CFourthGradeSchoolReport,四年级成绩单ReportDecorator,成绩单装饰器基类HighScoreDecorator,最高分装饰器Sort转载 2015-08-04 08:13:18 · 437 阅读 · 0 评论 -
Windows调试 - 如何使用dump文件
如何使用dump文件我最近在开发一个windows下的程序(win7/win8),有一些case下会crash,如果在自己开发机器上调试比较简单:运行程序,然后vs attach到进程上即可,但是在每台QA的机器上安装vs时不现实的,因此我们要用到dump文件。微软网站有一篇文章讲述如何创建dump文件:http://support.microsoft.com/kb/9转载 2015-08-26 08:25:15 · 1636 阅读 · 0 评论 -
stdafx.h的作用体会
stdafx.h的作用体会当使用visual C++时,总是包含了头文件stdafx.h,却不知道是干什么用的.哈哈,今天查找了相关资料,解释如下:当我们使用AppWizard来自动生成某些项目的时候,系统会自动把所需要include的头文件在stdafx.h中先include一下,这样,我们只需要直接include这个stdafx.h文件即可.因为同一个项目中的不同源文件CP转载 2015-08-12 10:05:05 · 701 阅读 · 0 评论 -
设计模式---原型
一、功能 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 二、示例代码namespace DesignPattern_Prototype{ // class Prototype class Prototype //抽象基类 { public: virtual Prototype* Clone() = 0 ; } ; // clas原创 2013-12-11 19:44:10 · 695 阅读 · 0 评论 -
设计模式---工厂方法
一、功能 定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使一个类的实例化延迟到其子类。 二、示例代码namespace DesignPattern_FactoryMethod{ class Product { /*...*/ } ; class ConcreteProduct : public Product { /*...*/原创 2013-12-09 19:21:09 · 613 阅读 · 0 评论 -
设计模式---抽象工厂
Abstract Factory一、功能 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。二、示例代码namespace DesignPattern_AbstractFactory{ class AbstractProductA {}; // Product A class ProductA1 : public AbstractPro原创 2013-11-28 19:57:18 · 618 阅读 · 0 评论 -
设计模式---生成器
一、功能 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。二、示例代码namespace DesignPattern_Builder{ class Product1 { PartA m_partA; PartB m_partB; PartC m_partC; } ; class Product2 { Par原创 2013-11-28 20:16:43 · 720 阅读 · 0 评论 -
c++ vector pair 综合应用
pair中元素 由 vector和其他值组成,外层vector由 pair组成,实现查找功能。 #include #include using namespace std;class myClass{public: myClass(int age, int year) : m_age(age), m_year(year) {}public: int ag原创 2013-11-26 19:09:58 · 1654 阅读 · 0 评论 -
c++ 函数返回引用
一,c++函数的返回分为以下几种情况 1)主函数main的返回值:这里提及一点,返回0表示程序运行成功。2)返回非引用类型:函数的返回值用于初始化在跳用函数出创建的临时对象。用函数返回值初始化临时对象与用实参初始化形参的方法是一样 的。如果返回类型不是引用,在调用函数的地方会将函数返回值复制给临时对象。且其返回值既可以是局部对象,也可以是求解表达式的结果。3)返回引用:当函数返回引转载 2013-11-06 11:16:17 · 545 阅读 · 0 评论 -
vector_map_set 常用操作小结
vector:#include #include using namespace std;int main(){ vector myVec; //新增元素 myVec.push_back(1); myVec.push_back(2); myVec.push_back(3); myVec.push_back(4); cout for (ve原创 2013-11-05 16:28:07 · 590 阅读 · 0 评论