- 博客(39)
- 收藏
- 关注
原创 c++11 array的使用
* c++11 array数组的使用*//*array是提供一个固定大小的数组*/void main5_7(){ array arr1 = { 1,2, 4, 5, 6 }; array arr2 = { 3, 1,3, 6, 9 }; for (int i = 0; i < arr1.size(); i++) { cout << arr1[i] << " "; }
2017-12-18 20:46:58 409
原创 c++ forward_list 的使用
/*C++11 forward_list的使用*/bool signal(const int&v){ if (v > 10 && v < 30) { return true; } return false;}bool signal2(const int&v1,const int &v2){ if (v1 > v2) { return true; } retur
2017-12-18 20:27:54 951
原创 关于模板类的实例
#include"stdafx.h"#includeusing namespace std;templateclass Test2{public: Test2(T name); void show(T vale);private: T m_name;};templateTest2::Test2(T name){ m_name = name;}t
2017-12-14 12:10:20 360
原创 关于Map的应用实例
#include"stdafx.h"#include#include#includeusing namespace std;#if 0map m_map = { { "DBF", 1209 }, { "DAW", 1202 } }; //初始化赋值typedef map::iterator iter;int main(){ //m_map m_map.insert
2017-12-14 12:07:50 414
原创 C语言注册回调实例
前言:在其他的帖子里面写过C++的注册回调实例,今天再把c的注册回调写进去,注册回调在实际的项目过程中有很大的用处注册回调函数hpp文件:#ifndef __API_H_#define __API_H_typedef enum{ STUDENT_INFO, TEACHER_INFO,}StructType;typedef void(*GuiCallBack)(
2017-08-17 15:12:14 2581
原创 Linux 多线程编程实例
#include#include#include#define RUN 1#define STOP 0pthread_mutex_t mut = PTHREAD_MUTEX_INITIALIZER;pthread_cond_t cond = PTHREAD_COND_INITIALIZER;int status =STOP;void *thread(void *a
2017-06-28 20:08:28 344
原创 vim 代码自动补齐
1 安装vim sudo apt-get install vim 首先在.vimrc中配置 set nocompatible /* set compatible 就是让 vim 关闭所有扩展的功能,尽量模拟 vi 的行为。这样子就不能应用vim很多强大的扩张功能 set nocompatible,关闭兼容模式。由于这个选项是最最基础的选项,会连带很多其
2017-06-27 19:27:58 10334
原创 c++ 中关于运算符优先级的问题 以及与或问题详解
1 关于&& ,|| 因为&& 和 || 运算符 都具有短路线。所以运算符后面 int a = 0 ; 0&& a++ ; //a的结果还是 0 ,因为前面已经是0 ,所以后面就不需要判断了, 1 || a++ ; // a的结果还是 0 ,因为前面已经是 1,所以后面就不需判断了, int a=0; int
2017-02-08 11:56:41 1369
原创 c 语言中字符串详解以及条件运算符的特殊例子
1 字符创初始化的方式: char str[10]={ 'I',' ','a','m',' ',‘h’,'a','p','p','y'}; char str[10]={"I am happy"}; char str[10]="I am happy"; char str[14]; str="I love China"; //错误
2017-02-05 18:34:27 965
原创 C语言中printf,scanf,getchar , puts,gets 的使用及区别
1 printf和scanf printf 的函数原型是 printf("", ) scanf的函数原型是 scanf("", ); 格式化字符串: 整数 : %d, 单精度浮点数 : %f 双精度福电视: %lf 字符串: %s, 单个字符 : %c 参数表:使用的是输入参数和输出参数的地址。关于scanf接
2017-02-05 13:26:28 3446
原创 c++设计模式之原型模式(prototype)
作用:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。Prototype模式提供了一个通过已存在对象进行新对象创建的接口(Clone), Clone()实现和具体的语言相关,在C++中通过拷贝构造函数实现。代码如下:#pragma once #includeusing namespace std;class Pro
2016-11-09 19:10:10 515
原创 c++ 设计模式之桥接模式(Bridge)
作用:将抽象部份与它的实现部份分离,使它们都可以独立地变化。将抽象(Abstraction)与实现(Implementation)分离,使得二者可以独立地变化。桥接模式号称设计模式中最难理解的模式之一,关键就是这个抽象和实现的分离非常让人奇怪,大部分人刚看到这个定义的时候都会认为实现就是继承自抽象,那怎么可能将他们分离呢。《大话设计模式》中就Bridge模式的解释:
2016-11-09 18:35:02 2449 1
原创 c++设计模式之组合模式(composite)
Composite组合模式作用:将对象组合成树形结构以表示“部分-整体”的层次结构。Composite使得用户对单个对象和组合对象的使用具有一致性。UML图如下:在Component中声明所有用来管理子对象的方法,其中包括Add、Remove等,这样实现Component接口的所有子类都具备了Add和Remove。这样做的好处就是叶节点和枝节点对于外界没
2016-11-09 13:39:04 454
原创 c++设计模式之享元模式
Flyweight享元模式作用:运用共享技术有效地支持大量细粒度的对象。类图如下:内部状态intrinsic和外部状态extrinsic:1)Flyweight模式中,最重要的是将对象分解成intrinsic和extrinsic两部分。2)内部状态:在享元对象内部并且不会随环境改变而改变的共享部分,可以称为是享元对象的内部状态3)
2016-11-08 11:23:12 476
原创 c++ 设计模式之备忘录模式(Memento)
Memento模式作用:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可将该对象恢复到原先保存的状态。Originator:负责创建一个备忘录Memento,用以记录当前时刻它的内部状态,并可使用备忘录恢复内部状态。Originator可根据需要决定Memento存储Originator的哪些内部状态。Memento:
2016-11-07 16:58:51 512
原创 C++ 设计模式之中介者模式
Mediator中介者模式作用:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。类图:下面是代码实例:#include"stdafx.h"#include#includeusing namespace std;//class Mediator;class Colleage;
2016-11-07 14:18:09 377
原创 c++ 设计模式之适配器模式
Adapter适配器模式作用:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。分为类适配器模式和对象适配器模式。系统的数据和行为都正确,但接口不符时,我们应该考虑使用适配器,目的是使控制范围之外的一个原有对象与某个接口匹配。适配器模式主要应用于希望复用一些现存的类,但是接口又与复用环境要求不一致的情况。
2016-11-03 18:27:20 885
原创 C++ 设计模式之模板方法模式
1. 概述 定义一个操作中的算法的骨架,而将步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义算法的某些特定步骤。2. 模式中的角色 2.1 抽象类(AbstractClass):实现了模板方法,定义了算法的骨架。 2.2 具体类(ConcreteClass):实现抽象类中的抽象方法,已完成完整的算法。3 类图:
2016-11-03 14:54:29 333
原创 C++ 设计模式之建造者模式
作用:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。Builder模式和AbstractFactory模式在功能上很相似,因为都是用来创建大的复杂的对象,它们的区别是:Builder模式强调的是一步步创建对象,并通过相同的创建过程可以获得不同的结果对象,一般来说Builder模式中对象不是直接返回的。而在AbstractFactory模式中对象是直接返回
2016-11-02 16:51:53 371
原创 c++ 设计模式之外观模式
外观模式为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这个子系统更加容易使用#include "stdafx.h"#includeusing namespace std;class SubSystemOne{public: void MethodOne() { cout<<" this is system one "<<
2016-11-02 14:42:21 248
原创 设计模式之代理模式
Proxy代理模式作用:为其他对象提供一种代理以控制对这个对象的访问。代理的种类:如果按照使用目的来划分,代理有以下几种:远程(Remote)代理:为一个位于不同的地址空间的对象提供一个局域代表对象。这个不同的地址空间可以是在本机器中,也可是在另一台机器中。远程代理又叫做大使(Ambassador)。 也就是为一个对象在不同的地址空间提供局部代表。这
2016-11-02 13:49:01 274
原创 关于 CreateEvent 和WaitForMultipleObjects以及 WaitForSingleObject 等函数的使用实例
1 创建时间句柄:CreateEvent HANDLE H_Event[2]; HANDLE HSignal; H_Event[0] = ::CreateEvent(NULL,TRUE,FALSE,NULL); H_Event[1] = ::CreateEvent(NULL,FALSE,FALSE,NULL);HSignal = ::CreateEvent(NULL
2016-11-01 17:33:28 1653
原创 C++ 设计模式之装饰者模式
1 装饰模式的类图:2装饰着模式(Decorator): 动态的给一个对象添加一些额外的职责. 比如java.io包. BufferedInputStream封装了FileInputStream, 它们都实现了InputStream接口, 但前者实现了readLine方法.3 代码实例: #include#includeusing namespace std;cl
2016-09-19 15:52:27 318
原创 c++ 设计模式之策略模式
1 下面是策略模式的类图:Context(应用场景):1、需要使用ConcreteStrategy提供的算法。2、内部维护一个Strategy的实例。3、负责动态设置运行时Strategy具体的实现算法。4、负责跟Strategy之间的交互和数据传递。Strategy(抽象策略类):定义了一个公共接口,各种不同的算法以不同的方式实现这个接
2016-09-19 11:33:17 431
原创 c++ 设计模式之命令(Command)模式
1 command 模式的真正作用就是将行为请求者与行为实现者分离开, 下图是 命令的模式的类图: 现在我们将这个图实例化成客户进放点点餐。 Clinent: 相当于客户 Invoker :相当于服务员,服务员接受客户所有的点菜指令,即command , ConcreterCommand : 相当于具体的指令,比如是点米饭,还是 点面条,要绑定
2016-09-02 14:34:50 841
转载 关于c++ 的静态成员变量为什么一定要初始化
我们知道C++类的静态成员变量是需要初始化的,但为什么要初始化呢。其实这句话“静态成员变量是需要初始化的”是有一定问题的,应该说“静态成员变量需要定义”才是准确的,而不是初始化。两者的区别在于:初始化是赋一个初始值,而定义是分配内存。静态成员变量在类中仅仅是声明,没有定义,所以要在类的外面定义,实际上是给静态成员变量分配内存。可以通过以下几个例子更形象的说明这个问题://t
2016-08-31 19:32:24 16668 2
原创 c++ 设计模式之观察者模式
1 何为观察者模式:一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实现事件处理系统。2 观察者模式的作用: 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己3 观察者模式类图
2016-08-31 18:44:10 384
原创 c++ 动态DLL编写和使用
1 动态DLL就是在程序的运行过程中加载的。创建DLL的过程就是选择创建一个win32项目,然后选择创建DLL工程。 在使用的时候我们一般需要创建一个.h文件,在.h文件中提供所有对的外函数的接口,然后在DLL的主cpp中包含这个.h文件就可以。2 DLL代码实例: //.h文件 #pragma once#define DLL_EXPORT __declspec(dl
2016-08-31 09:12:56 421
原创 关于STL中map的随笔
下面的这个代码实例是关于Map和makepair结合使用的一个小的方法#include "stdafx.h"#include#include#includeusing namespace std; map myMap; int _tmain(int argc, _TCHAR* argv[]){ myMap.insert(make_pair(1,'A')); myM
2016-08-30 18:31:26 273
原创 结构体和类的区别
1 在c++ 中结构体和类的主要区别是: 结构体所有成员默认是 公有的,但是类默认是私有的。2 结构体可以有构造函数,在使用的时候可以使用构造函数分配内存,也可以使用malloc分配内存3 关于C语言中结构体:a) C语言中的结构体不能为空,否则会报错b) C语言中的结构体只涉及到数据结构,而不涉及到算法,也就是说在C中数据结构和算法是分离的。换句话说就是C语
2016-08-30 16:19:30 570
原创 const常量使用概述
《1》 const 成员函数1 在函数后面加constdouble aaa(double bb) const{return bb}任何不会修改数据成员的函数都应该声明为const类型。如果在编写const成员函数时,不慎修改了数据成员,或者调用了其它非const成员函数,编译器将指出错误,这无疑会提高程序的健壮性。表明此函数不能影响对象的状态,说白一点就是不
2016-08-30 14:27:16 547
原创 关于多继承的时候构造函数的实现
// ConsoleApplication5.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#includeusing namespace std; class A{public: A(int value); ~ A();private:};A:: A(int value){ cout<<value<<" this is
2016-08-30 11:48:22 809
原创 C++中static应用详解
1 首先介绍一下 :关于程序的内存分配 栈 : 由编译器自动分配内存,存放函数的参数值,局部变量等,操作方式类似于数据结构中的栈。 堆 : 由程序员自己分配,若程序不释放,一般在程序结束时由os释放。 比如说new 之类的,类似于数据结构中的链表 全局区: 全局变量和静态变量都是存储在这一块的,包括静态局部变量和静态全局变量。初始化过的放在一块,没有初始化的放在另一块。程
2016-08-25 13:46:57 319
原创 设计模式之单例模式
1 何为单例模式 单例模式专业英文术语称之为 singleton,单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例。更通俗一点的解释就是:如果一个类始终只能创建一个实例,则这个类被称为单例类,这种模式就被称为单例模式。2 优点和缺点 优点: 确保所有对象都只访问唯一的实例 缺点: 对象的生存
2016-08-24 11:21:03 259
原创 c++在类中继承基类过多导致冲突的解决方案
在实际的项目过程中某个类有时候很可能我们会继承多个基类,这个时候就会容易造成冲突,但是这些基类我们又必须要使用,不可能说将冲突的基类给删掉,这个时候我们改怎么办呢?这里有一个比较简单的解决方案, 就是在这个类里面再定义一个类,让定义的这个类去继承冲突的类下面附上实例代码: .h文件#ifndef __IPOD_AUDIO_WINDOW_JUCEHEADER__#def
2016-08-23 16:01:50 3230
原创 pureMVC 简介
PureMVC 的简介PureMVC 是在基于模型、视图和控制器 MVC 模式建立的一个轻量级的应用框架,这是一个开源框架,它最初是被用于 ActionScript 3 语言使用的 Adobe Flex、Flash 和 AIR 之上,现在已经移植到几乎所有主要的软件平台之上。PureMVC 框架有两个分支版本:标准和多核。标准版提供了一种简单的编码分离的方法,按照基本的 MVC 概念设计而
2016-08-23 11:26:10 685
原创 自己写的监听函数实例
(1) 定义消息#pragma onceenum{ SHOW_VIDOE = 2, SHOW_AUIDO = 3,}; (2) 监听函数#pragma once#includeclass Listener{public: Listener(){}; ~Listener(){}; virtual void update(const in
2016-08-22 17:18:27 852
原创 如何用注册回调实现监听
前提:在上一篇文章中,自己简单写了一个注册回调的例子(c++ 注册回调函数研究),以及自己对注册回调一些理解,在后面的研究过程中,特别是做项目的时候越来越发现注册回调在项目中占有非常重要的重用,在目前自己所做的项目中,基本上每一个模块都使用了注册回调,所以自己在以现在所做项目为背景又写了一个简单的例子,过程写的有些粗糙,主要是为了实现这种架构模式。代码 实例背景:在一个基类的基础上诞生
2016-08-22 14:53:55 1712
原创 c++ 注册回调函数研究
一 何为注册回调 注册回调简单解释就是一个高层调用底层,底层再回过头来调用高层,这个过程就叫注册回调, 连接高层和底层就叫注册回调函数。高层程序C1调用底层程序C2,而在底层程序C2 又调用了高层程序C2的callback函数,那么这个callback函数对于高层程序C1来说就是回调函数。 在设计模式中这个方式叫回调模式。二 注册回调函数的实例://底层程序
2016-08-19 15:18:03 16245 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人