c++类
文章平均质量分 86
bestpool
游戏程序员
展开
-
回调函数
<br />简介<br /><br /> 对于很多初学者来说,往往觉得回调函数很神秘,很想知道回调函数的工作原理。本文将要解释什么是回调函数、它们有什么好处、为什么要使用它们等等问题,在开始之前,假设你已经熟知了函数指针。 <br /><br />什么是回调函数?<br /><br /> 简而言之,回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。<br /><br />为什么要使用回调函数?<br /转载 2010-08-18 10:08:00 · 683 阅读 · 0 评论 -
cocos2d-x http请求
coco2d-x2.1.1版本已经支持了http的请求,重要的类有CCHttpRequest,CCHttpResponse,下面就写一个小例子来测试下。向服务器发送请求,有两种形式,一种是get,一种是post,先看看get这种形式:这种是get方法:cocos2d::extension::CCHttpRequest* request = new cocos2d::extension:原创 2013-03-21 15:49:59 · 4116 阅读 · 0 评论 -
函数内使用指针
内存题,问下列程序会输出什么?(大致是原题,有些是自己的扩展)(1).#include using namespace std; void fa(char *p){ p = new char[10];} int main(){ char *p=NULL; fa(p); strcpy(p, "Hello!");转载 2014-03-02 22:00:27 · 1001 阅读 · 0 评论 -
为什么要用虚析构函数
我们知道,用C++开发的时候,用来做基类的类的析构函数一般都是虚函数。可是,为什么要这样做呢?下面用一个小例子来说明: 有下面的两个类:class ClxBase{public: ClxBase() {}; virtual ~ClxBase() {}; virtual void DoSomething() { cout };原创 2014-03-19 18:48:15 · 1046 阅读 · 0 评论 -
libcurl,多线程,gzip,共享DNS
转载http://hi.baidu.com/jjxiaoyan/item/e17b9ec3e31b93d4964452d8libcurl是一个不错的socket库,而且又是开源的。如果仅仅是简单的HTTP请求,那么只需要几行代码就能轻松实现。不过要用libcurl实现高效、高频率的HTTP请求就需要对libcurl有深入的了解才行。如果阅读英文无障碍的话,那么libcurl自带的示转载 2014-04-17 15:02:21 · 5092 阅读 · 0 评论 -
虚函数的的原理及应用
1,虚函数的概念虚函数是在类中被声明为virtual的成员函数,当编译器看到通过指针或引用调用此类函数时,对其执行晚绑定,即通过指针(或引用)指向的类的类型信息来决定该函数是哪个类的。通常此类指针或引用都声明为基类的,它可以指向基类或派生类的对象。2,多态的概念多态指同一个方法根据其所属的不同对象可以有不同的行为。(1)校长说放假的例子,不同的人有不同的行为。(2)小王原创 2014-04-09 14:45:03 · 3321 阅读 · 0 评论 -
赋值操作符和拷贝构造函数
今天在看一个消息结构的定义类时,有一个这样的接口WF_MSG & operator=(const WF_MSG & _msg);开始不是很明白,后来才知道这是赋值操作符,也通过这个深刻了解了赋值操作符,因为还定义了一个unsigned char * m_pMsgBuffer; /// 消息缓存指针 的指针,一般默认的赋值操作符是浅拷贝,而因为有消息缓存指针的变量,当这个消息类有两个转载 2014-04-13 22:58:46 · 622 阅读 · 0 评论 -
线程池
CworkQueue.h转载 2014-04-14 00:05:03 · 785 阅读 · 0 评论 -
函数指针
一,指针函数类型标识符 *函数名(参数表)int *f(x,y);首先它是一个函数,只不过这个函数的返回值是一个地址值。函数返回值必须用同类型的指针变量来接受,也就是说,指针函数一定有函数返回值,而且,在主调函数中,函数返回值必须赋给同类型的指针变量。float *fun();float *p;p = fun();原创 2014-06-04 16:54:10 · 867 阅读 · 0 评论 -
智能指针的分析与实现
一,为什么要用只能指针在编写c++程序的时候,让我们最头痛的问题就是内存泄露,也就是说int* pt = new int;delete pt;必须保证new和delete必须成对出现。作为程序猿,可以像使用普通变量一样来使用指针,这个指针可以在恰当的时候被自动释放,智能指针就是这样一个指针,它的任务是保证每一个被动态分配的内存都能够被释放。看一个例子原创 2014-05-28 14:24:10 · 831 阅读 · 0 评论 -
coco2d-x中成员函数回调实现原理
//头文件#ifndef __COOCS2D_CALLBACK_H__ #define __COOCS2D_CALLBACK_H__ #include #include using namespace std; // 基类 class Person { public: void name(string name); }; // 定义基类的成员转载 2013-03-13 13:46:23 · 1542 阅读 · 0 评论 -
编程规范
目 录1 排版 2 注释 3 标识符命名 4 变量、结构 5 函数、过程 6 可测性 7 宏 1 排版1-1:程序块的{}的写法。示例:如下例子不符合规范。for (int i=0; i... // program code}应如下书写for (int i=0; i{... // program code}1-原创 2012-09-01 18:58:42 · 1011 阅读 · 0 评论 -
c++信号槽的使用方法
C++信号槽使用方法 1. 为什么要使用信号槽. a. 可以将事件源和订阅处理者分开b. 降低耦合性,事件源只需要向外界暴露最少的信息,内部改变不影响外部行为c. 降低代码复杂性,将事件不同的处理代码分散到各个订阅者内部。2. 如何使用信息槽a. 包含头文件, #include "sigslo转载 2012-02-21 10:40:46 · 3216 阅读 · 0 评论 -
IOCP模型总结
IOCP(I/O Completion Port,I/O完成端口)是性能最好的一种I/O模型。它是应用程序使用线程池处理异步I/O请求的一种机制。在处理多个并发的异步I/O请求时,以往的模型都是在接收请求是创建一个线程来应答请求。这样就有很多的线程并行地运行在系统中。而这些线程都是可运行的,Windows内核花费大量的时间在进行线程的上下文切换,并没有多少时间花在线程运行上。再加上创建新线程的开销比较大,所以造成了效率的低下。 调用的步骤如下:抽象出一个完成端口大概的处理流程: 1:创建一个完成端口。 2:转载 2010-08-26 10:51:00 · 489 阅读 · 0 评论 -
字符编码:ASCII,Unicode,UTF-8,GB2312
<br />从文件编码的方式来看,文件可分为ASCII码文件和二进制码文件两种。<br />ASCII文件也称为文本文件,这种文件在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。例如,数5678的存储形式为:<br />ASC码: 00110101 00110110 00110111 00111000<br />↓ ↓ ↓ ↓<br />十进制码: 5 6 7 8 共占用4个字节。ASCII码文件可在屏幕上按字符显示, 例如源程序文件就是ASCII文转载 2010-10-18 18:59:00 · 851 阅读 · 0 评论 -
typedef的用法大全。
<br /> <br />摘要 typedef 声明,简称 typedef,为现有类型创建一个新的名字。比如人们常常使用 typedef 来编写更美观和可读的代码。所谓美观,意指 typedef 能隐藏笨拙的语法构造以及平台相关的数据类型,从而增强可移植性和以及未来的可维护性。<br /><br />第一、四个用途<br />用途一:<br />定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如:<br />char* pa, pb; // 这多数不符合我们的意图,它只声转载 2010-10-26 14:57:00 · 682 阅读 · 0 评论 -
在vs2003(vc7.1)上安装boost库
<br />以前曾经写过一个vs2003安装boost的方法,但是换了台新机器后以前的方法就是安装不上了,所以再次求救于网络终于找到http://hi.baidu.com/%CF%C2%D2%BB%B5%C0%B2%CA%BA%E7/blog/item/2d0e6f2c01a6a2e98b139938.html 具体安装步骤完全复制过来了<br />这些天研究boost的使用,从网上看了一些教程,按照其方法做,结果在硬盘上留下了一堆LJ文件。强烈鄙视这种不管对错,你抄我,我抄你的不负责任的抄 袭行为。历时一转载 2010-10-26 15:01:00 · 2855 阅读 · 1 评论 -
动态链接库和静态链接库的创建及应用实例
<br />封装库学习心得<br />以前用别人的框架API函数,只能看到一个接口类,这个接口类里面全是纯虚的方法,但不明白是如何实现这些功能的,现在狠下心将其研究清楚。<br />封装库按照大类可以分为两种,即动态链接库和静态库<br />而动态链接库又分为两种加载的方式,动态加载和静态加载。<br />下面我就讲讲这这些库的具体创建和具体应用。<br />一,动态库的创建<br />我用的vs2003编译工具,我以游戏大厅房间桌子的一些接口为例,具体创建一个动态库的步骤如下<br />1,新建项目,选择原创 2010-12-29 13:37:00 · 2354 阅读 · 2 评论 -
解决memcached_set()报错
<br />原本好好的程序,今天执行的时候总是在memcached_set()这个函数调用的时候出错。<br />刚开始返回的错误信息是MEMCACHED_SERVER_ERROR(10),想了半天,怀疑是协议的问题,于是初始化后设置协议为二进制的:<br />m_Mem = memcached_create(NULL);<br />m_iErrorCode = memcached_behavior_set(m_Mem, <br />MEMCACHED_BEHAVIOR_BINARY_PROTOCOL,<b转载 2011-01-13 10:06:00 · 8647 阅读 · 0 评论 -
memcached简单的使用教程
<br />这是工程应用性质的文章:memcached是数据快速存取的工具,wikipedia和facebook就用了它提高速度。具体情况可以wiki.<br />c/c++里面使用memcached本来是很简单的事情,但就是没有人说,非要我去读libmemcache的实例代码才行,manpage也没有说清楚(但还不得不看)。如果要使用memcached,步骤如下:<br />1 安装memcached<br /> 你可以去官网 上下载,也可以sudo apt-get install memcached<转载 2011-01-13 10:36:00 · 1555 阅读 · 0 评论 -
socket通信
<br />网络编程服务器客户端模式<br />面向连接的套接字<br /><br />一, 客户端<br />1,WSAStartup,这个函数必须用,是有关socket版本的函数。<br />2,调用Socket()生成一个套接字号<br />int clientfd = socket(AF_INET, SOCK_STREAM, 0);<br />3,用connect()函数来连接服务器端<br />structsockaddr_inservaddr; <br /> me原创 2011-02-16 18:05:00 · 1327 阅读 · 0 评论 -
vi中替换
用vi打开文件,然后进入命令行模式譬如你想把文件中所有的sky替换成moon可以打入这样的命令:%s/sky/moon/g然后回车,就搞定了。原创 2011-12-19 19:28:24 · 659 阅读 · 0 评论 -
常见排序算法
一、冒泡排序、简单选择排序、直接插入排序https://note.youdao.com/share/?id=68553ee40d8bac3e8609531cc27c2faa&type=note#/二、归并排序https://note.youdao.com/share/?id=8b2ef97bb7575c16892c0c63c1fc57f5&type=note#/三、希尔排序h...转载 2018-11-05 10:12:09 · 329 阅读 · 0 评论