C++
文章平均质量分 70
hulefei29
我就是我
展开
-
C++ 虚函数表解析
C++ 虚函数表解析 陈皓http://blog.csdn.net/haoel 前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图转载 2008-10-18 10:27:00 · 690 阅读 · 0 评论 -
Malloc与new 的区别
1,malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。 2,对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于...原创 2014-01-11 22:54:15 · 56 阅读 · 0 评论 -
正确使用stl map的erase方法
STL的map表里有一个erase方法用来从一个map中删除掉指令的节点eg:map<string,string> mapTest;typedef map<string,string>::iterator ITER;ITER iter=mapTest.find(key);mapTest.erase(iter); 像上面这样只是删除单个节点,map的形为不会出现...原创 2014-05-27 17:54:58 · 60 阅读 · 0 评论 -
c++11 生产随机数
#include <random>#include <iostream> int main(){ std::random_device rd; std::mt19937 gen(rd()); std::uniform_int_distribution<> dis(1, 6); for (int n=...原创 2014-06-05 11:12:48 · 92 阅读 · 0 评论 -
C++里面的const是怎么实现的?
Const 推出的初始目的,正是为了取代预编译指令,消除它的缺点,同时继承它的优点。现在它的形式变成了:Const DataType VariableName = VariableValue ;为什么const能很好地取代预定义语句?const 到底有什么大神通,使它可以振臂一挥取代预定义语句呢?1. 首先,以const 修饰的常量值,具有不可变性,这是它能取代预定义语句的基础。...原创 2014-06-13 16:02:36 · 131 阅读 · 0 评论 -
遍历std::vector和std::map
//遍历vector for (auto iter = vector.begin() ; iter != vector.end() ; iter++ ){ *iter}//遍历mapfor(auto it = map.begin(); it != map.end(); ++it) { auto key = it->first; auto v...原创 2014-02-17 11:10:38 · 152 阅读 · 0 评论 -
深入浅出对象池(Object Pool)
在稍微大型一点的软件系统开发中,通常我们会用到内存池,对象池,线程池,连接池等各种各样的池(Pool),本文就来讲一讲对象池(Object Pool)。下面从四个方面来介绍一下对象池:1.什么是对象池(Object Pool) ?池(Poo), 与集合在某种意义上有些相似。 水池,是一定数量的水的集合;内存池,是一定数量的已经分配好的内存的集合;线程池,是一定数量的已经创建好的线程的集合。那...原创 2014-02-18 00:07:12 · 170 阅读 · 0 评论 -
开源免费的C/C++网络库(c/c++ sockets library) 七剑下天山
(1)ACE庞大、复杂,适合大型项目。开源、免费,不依赖第三方库,支持跨平台。http://www.cs.wustl.edu/~schmidt/ACE.html (2)AsioAsio基于Boost开发的异步IO库,封装了Socket,简化基于socket程序的开发。开源、免费,支持跨平台。http://think-async.com/ (3)POCOPO...原创 2013-09-12 00:20:20 · 82 阅读 · 0 评论 -
OpenGL ES 3.0 增加大量新特性
OpenGL 规范被广泛用于 PC 和移动设备。在昨天的 SIGGRAPH 2012 大会上,OpenGL 背后公益性组织科纳斯组织(Khronos Group)公布了新版本:面对移动领域的 OpenGL ES 版本更新到 3.0;面对桌面领域的 OpenGL 版本更新到 4.3;可运用在增强现实领域的图形接口 OpenVL。三者中,OpenGL ES 3.0 成为主角,因...原创 2013-09-30 11:46:21 · 179 阅读 · 0 评论 -
C语言 ## __VA_ARGS__ 宏
在GNU C中,宏可以接受可变数目的参数,就象函数一样,例如: 12#define pr_debug(fmt,arg...) \ printk(KERN_DEBUG fmt, ##arg)用可变参数宏(variadic macros)传递可变参数表 你可能很熟悉在函数中使用可变参数表,如:1voi...原创 2013-10-11 16:16:42 · 51 阅读 · 0 评论 -
宏的高级使用--##,__VA_ARGS__, __FILE__, __FUNCTION__等
先说一下本文中会提到的内容:##,__VA_ARGS__, __FILE__, __LINE__ , __FUNCTION__等宏变量:先举一个例子,会用到上面这些宏:[cpp] view plaincopy #define myprintf(...) printk("[lch]:File:%s, Line:%d, Function:%s," \ ...原创 2013-10-11 16:24:13 · 68 阅读 · 0 评论 -
Cocos2dx+lua合适还是Cocos2dx+js合适
我个人肯定是推荐 Lua 的,原因如下:1. 运行效率:Lua 的性能在各种测试里都比 JavaScript 快不少。而移动设备上存在不支持 JIT 的情况(未越狱的 iOS 设备),Lua 对比 JavaScript 的性能优势就更明显。2. 安全性:现在 cocos2d-x 使用 LuaJIT 来执行 Lua,所以可以把 Lua 代码编译为字节码再打包到游戏里。由于 LuaJIT 的字节码是高...原创 2013-10-14 11:02:55 · 556 阅读 · 0 评论 -
What is a C++ delegate?
转自:http://stackoverflow.com/questions/9568150/what-is-a-c-delegate Option 1 : functors:A function object may be created by implementing operator()struct Functor{ // Normal class/stru...原创 2014-08-19 15:26:09 · 78 阅读 · 0 评论 -
vtable
frome:http://www.learncpp.com/cpp-tutorial/125-the-virtual-table/原创 2014-09-23 00:58:59 · 191 阅读 · 0 评论 -
MD5 算法实现(c++)
用c++实现了md5算法。包含 md5.h 和md5.cpp 两个文件。主要参考百度百科 “MD5” 原理的描述:http://baike.baidu.cn/view/7636.htm,代码中变量命名也是参考其中的公式,程序的使用说明在md5.h 文件的末尾注释中。测试结果和百度百科测试例子一致。实现过程中需要注意事项:最后把四个变量A B C D 链接成结果时 ,注意变量高低位的先...原创 2014-04-28 13:18:51 · 134 阅读 · 0 评论 -
c++获取时间
time_t rawtime; time(&rawtime); long now = rawtime; printf("时间戳:%ld",now); struct tm *ptm = localtime((time_t*)&now); char tmp[100] = {0}; memset(tmp, 0x0...原创 2014-04-28 13:56:54 · 99 阅读 · 0 评论 -
const char*, char const* and char *const 区别
const char*, char const*, char*const的区别问题几乎是C++面试中每次都会有的题目。 事实上这个概念谁都有只是三种声明方式非常相似很容易记混。 Bjarne在他的The C++ Programming Language里面给出过一个助记的方法: 把一个声明从右向左读。 char * const cp; ( * 读成 pointer to ) cp is a co...原创 2014-01-11 22:52:15 · 57 阅读 · 0 评论 -
C++ STL中判断list为空,size()==0和empty()有什么区别
关于两个的区别,首先size()==0为bool表达式,empty()为函数调用,这一点很明显。查看源代码bool empty() const { return _M_node->_M_next == _M_node; } size_type size() const { size_type __result = 0; distance(begin...原创 2014-01-11 22:49:38 · 187 阅读 · 0 评论 -
_tmain与main的区别
用过C言语的人都知道每一个C的程序都会有一个main函数,但有时看别人写的程序却出现了_tmain,会感动很困惑。我当时也是很困惑,于是上网找资料看。现在将我得到的结果总结一下。因为并没有什么根据,如果有误。欢迎指正:_tmain与main的区别1。 main是C程序的函数,_tmain是main为了支持unicode所使用的main的別名2。 _tmain的定义在可以找到,如#define _t原创 2008-10-19 13:47:00 · 7894 阅读 · 3 评论 -
为什么要加#include "stdafx.h"
所谓头文件预编译,就是把一个工程(Project)中使用的一些MFC标准头文件(如Windows.H、Afxwin.H)预先编译,以后该工程编译时,不再编译这部分头文件,仅仅使用预编译的结果。这样可以加快编译速度,节省时间。 预编译头文件通过编译stdafx.cpp生成,以工程名命名,由于预编译的头文件的后缀是“pch”,所以编译结果文件是projectname.pch。 编译器通过一个头文件st原创 2008-10-19 13:56:00 · 1154 阅读 · 0 评论 -
如何在 Windows上编译Objective-C
Objective-C现在几乎已经变成了苹果的专利了,可以直接在苹果的Xcode上编译Objective-C程序,但是在Windows平台下的编译工具就寥寥无几了,本身这种语言用的人就不是很多。今天在网上突然看到了有人发帖,可以在Windows平台下编译Objective-C,就抱着好奇的心态试了试。没想到,居然成功了,现在就把怎样搭建Objective-C编译平台的经验拿出来和大家分享。1、安装转载 2010-02-21 10:27:00 · 7671 阅读 · 7 评论 -
do...while(0)的妙用
在C++中,有三种类型的循环语句:for, while, 和do...while, 但是在一般应用中作循环时, 我们可能用for和while要多一些,do...while相对不受重视。 但是,最近在读我们项目的代码时,却发现了do...while的一些十分聪明的用法,不是用来做循环,而是用作其他来提高代码的健壮性。 1. do...while(0)消除goto语句。 通常,如果在一个函数中...原创 2012-11-12 11:48:03 · 53 阅读 · 0 评论 -
std::vector<char> * 转std::string 的三种方法
std::vector<char> *data = response->getResponseData();std::string res;//way1for (int i = 0;i<data->size();++i) { res+=(*data)[i];}res+='\0';std:cout << res; s...原创 2013-11-14 15:53:47 · 1365 阅读 · 0 评论 -
[cocos2d-x]File文件的IO读写处理
为了保存自定义数据文件,需要保存文件和读取文件,也就是File的IO处理;针对cocos2d-x我们可以通过CCFileUtils::sharedFileUtils()->getWriteablePath()获取到可读写的文件目录,其实是Caches目录。 关于file的操作,我们要明白几个概念:File :文件对象,用于创建文件,操作文件fopen:打开操作一个具体文...原创 2013-11-15 16:16:19 · 63 阅读 · 0 评论 -
【C++】DISALLOW_COPY_AND_ASSIGN
有时候,进行类体设计时,会发现某个类的对象是独一无二的,没有完全相同的对象,也就是对该类对象做副本没有任何意义.因此,需要限制编译器自动生动的拷贝构造函数和赋值构造函数.一般参用下面的宏定义的方式进行限制,代码如下:// A macro to disallow the copy constructor and operator= functions // This shoul...原创 2013-11-27 13:24:36 · 126 阅读 · 0 评论 -
32位和64位系统区别及int字节数
一)64位系统和32位有什么区别? 1、64bit CPU拥有更大的寻址能力,最大支持到16GB内存,而32bit只支持4G内存2、64位CPU一次可提取64位数据,比32位提高了一倍,理论上性能会提升1倍。但这是建立在64bit操作系统,64bit软件的基础上的。 什么是64位处理器?之所以叫做“64位处理器”,是因为电脑内部都是实行2进制运算,处理器(CPU)一次处理数...原创 2013-11-29 10:34:03 · 125 阅读 · 0 评论 -
C++ 11中的auto和decltype
C++ 11中引入的auto主要有两种用途:自动类型推断和返回值占位。auto在C++ 98中的标识临时变量的语义,由于使用极少且多余,在C++ 11中已被删除。auto自动类型推断,用于从初始化表达式中推断出变量的数据类型。通过auto的自动类型推断,可以大大简化我们的编程工作。下面是一些使用auto的例子。 auto a; // 错误,没有初始化表达式,无法推断出a的类型 ...原创 2013-12-05 15:13:47 · 83 阅读 · 0 评论 -
从INT 到STRING的几种方法
1. int sprintf( char *buffer, const char *format [, argument] ... ); <stdio.h>例如: int ss; char temp[64]; string str; ss = 1000; sprintf(temp, "%d",...原创 2013-12-06 11:28:51 · 58 阅读 · 0 评论 -
C++ Vector 使用心得
标准库Vector类型使用需要的头文件:#include <vector>Vector:Vector 是一个类模板。不是一种数据类型。 Vector<int>是一种数据类型。一、 定义和初始化Vector<T> v1; //默认构造函数v1为空Vector<T> v2(v1);//v2是v1的一个副本Vector<T> v3(n,i);/...原创 2013-12-10 17:21:32 · 56 阅读 · 0 评论 -
开源免费的C/C++网络库(c/c++ sockets library)
(1)ACE庞大、复杂,适合大型项目。开源、免费,不依赖第三方库,支持跨平台。http://www.cs.wustl.edu/~schmidt/ACE.html (2)AsioAsio基于Boost开发的异步IO库,封装了Socket,简化基于socket程序的开发。开源、免费,支持跨平台。http://think-async.com/ (3)POCOPO...原创 2013-12-23 11:09:11 · 79 阅读 · 0 评论 -
求二叉树中叶子节点个数,总的节点个数
struct BinaryTree { char value; BinaryTree* left; BinaryTree* right; }; //求二叉树中的节点个数 //(1)如果二叉树为空,节点个数为0 //(2)如果二叉树不为空,二叉树节点个数 = 左子树节点个数 + 右子树节点个数 + 1 int g...原创 2013-12-29 17:54:54 · 620 阅读 · 0 评论 -
C++ 迭代器失效
众所周知当使用一个容器的insert或者erase函数通过迭代器插入或删除元素"可能"会导致迭代器失效,因此很多建议都是让我们获取insert或者erase返回的迭代器,以便用重新获取新的有效的迭代器进行正确的操作:iter=vec.insert(iter); iter=vec.erase(iter); 想想究竟为什么迭代器失效,原因也不难理解。以vector为例,当我...原创 2013-12-29 20:42:01 · 45 阅读 · 0 评论 -
理解C++ dynamic_cast
在面向对象程序设计中,有时我们需要在运行时查询一个对象是否能作为某种多态类型使用。与Java的instanceof,以及C#的as、is运算符类似,C++提供了dynamic_cast函数用于动态转型。相比C风格的强制类型转换和C++ reinterpret_cast,dynamic_cast提供了类型安全检查,是一种基于能力查询(Capability Query)的转换,所以在多态类型间进行转...原创 2013-12-30 21:16:42 · 94 阅读 · 0 评论 -
c++方法后面加const
const CString &GetCurrentDir() const; //得到当前程序目录前面一个const表明返回值不能修改,后一个const表明方法只能读取类的成员变量,不能给成员变量赋值。 LPCTSTR GetCurrentLanguageName() const; const表明GetCurrentLanguageName只能读取类的成员变量,不能给成员变量...原创 2014-04-28 23:41:56 · 106 阅读 · 0 评论