c++ senior
文章平均质量分 79
happylife1527
这个作者很懒,什么都没留下…
展开
-
C++各大有名库的介绍——线程
http://www.cnblogs.com/adylee/archive/2007/10/26/938270.htmlC++ Threads库的目标是给程序员提供易于使用的类,这些类被继承以提供在Linux环境中很难看到的大量的线程方面的功能; ZThreads是一个先进的面向对象,跨平台的C++线程和同步库。 在C++中,库的地位是非常高的。C++之父 Bjarne Str转载 2012-12-14 16:15:42 · 469 阅读 · 0 评论 -
#ifdef __cplusplus 倒底是什么意思?
时常在cpp的代码之中看到这样的代码: #ifdef __cplusplus extern "C" { #endif //一段代码 #ifdef __cplusplus } #endif 这样的代码到底是什么意思呢?首先,__cplusplus是cpp中的自定义宏,那么定义了这个宏的话表示这是一段cpp的代码,也就是说,上面的代码的含义是:如果这是一段cpp的代转载 2012-11-08 09:04:07 · 452 阅读 · 0 评论 -
关于函数strtok和strtok_r的使用要点和实现原理
strtok函数的使用是一个老生常谈的问题了。该函数的作用很大,争议也很大。以下的表述可能与一些资料有区别或者说与你原来的认识有差异,因此,我尽量以实验为证。交代一下实验环境是必要的,winxp+vc6.0,一个极端平民化的实验环境。本文中使用的源代码大部分来自于网络,我稍加修改作为例证。当然,本人水平有限,有不妥之处在所难免,各位见谅的同时不妨多做实验,以实验为证。strtok的函数原型为c转载 2012-10-16 22:49:22 · 1273 阅读 · 1 评论 -
善用表驱动法
http://blog.csdn.net/arau_sh/article/details/7789145转自 http://dennis-zane.iteye.com/blog/183886最近碰到个需求,计算游戏得分的规则,类似这样:游戏人数第一名获得赌注第二名获得赌注第三名获得赌注第四名获得赌注转载 2012-09-23 14:11:01 · 293 阅读 · 0 评论 -
表驱动浅议
http://blog.csdn.net/arau_sh/article/details/7789102转自 http://www.jsjgprjyyy.com/Html/?1260_5.html摘要:本文深入数据结构中“表”的使用,探讨以表设计为中心来驱动各种复杂信息的处理,也就是表驱动方法;并进一步探讨表中数据的结构封装和表驱动方法的功能扩展。 关键词:数据结构;表驱动;接转载 2012-09-23 14:10:25 · 397 阅读 · 0 评论 -
理解句柄类
http://www.cnblogs.com/weiqubo/archive/2011/05/26/2059362.html在代理类的帮助下,我们已经可以实现在一个容器里存储一个类层次里所有类型的对象,但是代理有一个很明显的缺点,就是需要复制对象,当一个对象非常大或者是一种不能轻易复制的资源的时候,这个实现遇到了很大的困难,于是我们有了句转载 2012-09-23 14:07:53 · 261 阅读 · 0 评论 -
一般函数指针和类的成员函数指针
http://www.cnblogs.com/xianyunhe/archive/2011/11/26/2264709.htmlhttp://www.cnblogs.com/xianyunhe/archive/2011/11/27/2265148.html转载请注明原文网址: http://www.cnblogs.com/xianyunhe/archive/2011/11/26/22转载 2012-09-22 10:12:27 · 336 阅读 · 0 评论 -
程序在内存中运行的奥秘
http://blog.csdn.net/xinghongduo/article/details/7727902内存管理是操作系统的核心功能,无论对于开发者还是系统管理员内存管理的重要性都是不言而喻的。我会在接下来的几篇文章通过计算机的实际运行过程谈谈内存管理,当然在必要的时候我也会从底层原理去阐释这个问题。我们提到的概念是不局限于平台特性的通用概念,不过为了阐述这些概念我们选取的实例大多来源转载 2012-09-06 21:31:25 · 409 阅读 · 0 评论 -
指针和引用(int*、int&、int*&、int&*、int**)
相信很多CPPers跟我一样,曾经在指针和引用里徘徊了很久很久。经常弄混指针和引用,尤其是见到如题中列出那些用法,着实是伤脑经。后来,在项目中用着用着,就能搞清楚区别了,算是会用吧。然而,对于一个Programmer,最忌讳的就是不知其所以然,会用和懂是两番天地。停留在会用的人,始终是原地打转;而懂的人,一通百通,能举一反三。本文,就如题的指针和引用的用法做一个介绍。首先我们来普及一下转载 2012-10-12 16:09:32 · 415 阅读 · 0 评论 -
解析#pragma指令 .
在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。其格式一般为: #Pragma Para其中Para 为参数,下面来看一些常用的参数转载 2012-10-12 12:51:26 · 403 阅读 · 0 评论 -
c++ string类实现
#include #include #include #include using namespace std; class CMyString { friend std::ostream& operatorconst CMyString& str); private:转载 2012-11-08 18:15:39 · 292 阅读 · 0 评论 -
C/C++内存泄露故障(Memory Leak Faults)之简单篇
http://blog.csdn.net/acb0y/article/details/6210549 五类简单的C/C++内存泄露: 第一种类型: type:第一类的MLF故障 desc: 在完整路径p申请了内存,但在p上无任何的内存释放函数,称为第一类MLF故障。 第二种类型: type: 第二类MLF转载 2012-11-16 22:57:33 · 611 阅读 · 0 评论 -
C++内存泄露(Memory Leak Faults)之高级篇
C++内存泄露(Memory Leak Faults)之高级篇 如果在构造函数中有申请内存的操作,且在其他程序中有两个对象直接或间接的赋值操作,如果没有对“=”运算符进行重载定义,则会产生两次释放同一次内存操作的错误。该错误为第7类的内存错误。Demo代码如下:[cpp] view plaincopyprint?/* FileName:转载 2012-11-16 22:58:20 · 464 阅读 · 0 评论 -
C++各大有名库的介绍——GUI
http://www.cnblogs.com/adylee/archive/2007/10/26/938259.html 在众多C++的库中,GUI部分的库算是比较繁荣,也比较引人注目的。在实际开发中,GUI库的选择也是非常重要的一件事情,下面我们综述一下可选择的GUI库,各自的特点以及相关工具的支持。 在C++中,库的地位是非常高的。C++之父 Bjarne Stroustrup先转载 2012-12-14 16:14:15 · 508 阅读 · 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)POCOPOC转载 2012-12-14 16:09:15 · 407 阅读 · 0 评论 -
C++各大有名库的介绍——网络通信
http://www.cnblogs.com/adylee/archive/2007/10/26/938260.htmlACE是C++库的代表,超重量级的网络通信开发框架。ACE自适配通信环境(Adaptive Communication Environment)是可以自由使用、开放源代码的面向对象框架,在其中实现了许多用于并发通信软件的核心模式。 在C++中,库的地位是非常高的。C转载 2012-12-14 16:18:19 · 456 阅读 · 0 评论 -
经典开源C/C++项目
http://www.cnblogs.com/dkblog/archive/2011/08/19/2145939.htmlC/C++ SOAP工具包 gSOAPgSOAP一种跨平台的C和 C++软件开发工具包。生成C/C++的RPC代码,XML数据绑定,对SOAP Web服务和其他应用形成高效的具体架构解析器,它们都受益于一个XML接口。 这个工具包提供了一个全面和透明的X转载 2012-12-14 15:57:14 · 525 阅读 · 0 评论 -
程序员技术练级攻略 .
http://blog.csdn.net/dcbaabcd111/article/details/8283960http://coolshell.cn/articles/4990.html 程序员技术练级攻略2011年7月18日陈皓 发表评论阅读评论 199,384 人阅读 月光博客6月12日发表了《写给新手程序员的一封信》,翻译自《An转载 2012-12-23 22:13:39 · 624 阅读 · 0 评论 -
结构体在内存中的对其规则 .
http://blog.csdn.net/grantxx/article/details/7577730一个结构体变量定义完之后,其在内存中的存储并不等于其所包含元素的宽度之和。例一: #include using nam转载 2012-12-23 19:09:03 · 332 阅读 · 0 评论 -
智能指针的原理及实现
当类中有指针成员时,一般有两种方式来管理指针成员:一是采用值型的方式管理,每个类对象都保留一份指针指向的对象的拷贝;另一种更优雅的方式是使用智能指针,从而实现指针指向的对象的共享。 智能指针(smart pointer)的一种通用实现技术是使用引用计数(reference count)。智能指针类将一个计数器与类指向的对象相关联,引用计数跟踪该类有多少个对象共享同一指针。转载 2012-11-21 22:00:17 · 508 阅读 · 0 评论 -
如何让new 操作 不分配内存 只调用构造函数
没有内存池的时候,你只是用new直接创建了一个对象,但是new的过程分为两步,首先是分配内存,然后是调用构造函数。内存池就只是负责内存的分配,有了内存池后,你再去创建对象时候,只需要先从内存池中取出内存,然后再在取出的内存上调用对象的构造函数,产生你需要的对象 如何让new操作符不分配内存,只调用构造函数 问题:c++中的new操作符转载 2012-11-21 21:58:34 · 657 阅读 · 0 评论 -
new的三种形态
C++语言一直被认为是复杂编程语言中的杰出代表之一,不仅仅是因为其繁缛的语法规则,还因为其晦涩的术语。下面要讲的就是你的老熟人—new:它是一个内存管理的操作符,能够从堆中划分一块区域,自动调用构造函数,动态地创建某种特定类型的数据,最后返回该区域的指针。该数据使用完后,应调用delete运算符,释放动态申请的这块内存。如果这就是你对new的所有认识,那么我不得不说,你依旧被new转载 2012-11-21 21:57:36 · 430 阅读 · 0 评论 -
new,operate new和placement new
new:不能被重载,其行为总是一致的。先调用operator new分配内存,然后调用构造函数初始化那段内存。operator new:要实现不同的内存分配行为,应该重载operator new,而不是new。placement new:只是operator new重载的一个版本。它并不分配内存,只是返回指向已经分配好的某段内存的一个指针。因此在删除该对象时,需要调用对象的析构函数。转载 2012-11-20 13:00:00 · 427 阅读 · 0 评论 -
关于set_new_handler(转载)
当运算符new找不到足够大的连续内存块来为对象分配内存时将会发生什么?一个称为 new-handler的函数被调用。对于new-handler的缺省动作是抛出一个异常。然而,如果我们在程序里用堆分配,至少要用“内存已用完”的信息代替 new-handler,并异常中断程序。用这个办法,在调试程序时会得到程序出错的线索。通过包含NEW. H,然后以我们想装入的函数地址为参数调用set_new转载 2012-11-19 20:49:50 · 302 阅读 · 0 评论 -
operator new与new operator
C++中的operator new与new operator,看上去挺像的两姐妹,却有天壤之别。operator new(1) 只分配所要求的空间,不调用相关对象的构造函数。当无法满足所要求分配的空间时,则 ->如果有new_handler,则调用new_handler,否则 ->如果没要求不抛出异常(以nothrow参数表达),则执行b转载 2012-11-19 20:40:01 · 298 阅读 · 0 评论 -
operator new 与 new operator
http://www.cnblogs.com/jamesmile/archive/2010/04/17/1714311.htmlC++中的operator new与new operator,看上去挺像的两姐妹,却有天壤之别。 operator new (1) 只分配所要求的空间,不调用相关对象的构造函数。当无法满足所要求分配的空间时,则 ->如果有new_handl转载 2012-09-19 11:05:39 · 505 阅读 · 0 评论 -
成员函数“指针”的大小
之所以将指针用引号表示,是因为成员函数“指针”不是指针!还是让代码来说话。#include using namespace std;// 父类Aclass A{public: int funA() { return 2; }};// 父类Bclass B{public: int funB() { return 3; }};// 单继承cl转载 2012-09-20 11:20:08 · 527 阅读 · 0 评论 -
大端和小端
嵌入式开发者应该对大端和小端很熟悉。在内存单元中数据是以字节为存储单位的,对于多字节数据,在小端模式中,低字节数据存放在低地址单元,而在大端模式中,低字节数据存放在高地址单元。比如一个定义一个short型的变量a,赋值为1,由于short型数据占2字节。在小端模式中,其存放方式为0X4000 000000010X4001 00000000而在大端模式中,其存放方式为0X40转载 2012-09-20 16:15:46 · 571 阅读 · 0 评论 -
小括号重载
#include using namespace std;class Time{public: int h; int m; int s; Time( int h = 0, int m = 0, int s = 0 ) { operator()(h,m,s); } //小括号重载 版本转载 2012-09-20 11:16:01 · 403 阅读 · 0 评论 -
模板的特化与偏特化
实话实说,模板用得特别少,语法上的使用都相当生疏。 #include using namespace std;#include string>#include // 一个简单的加法模板templateclass T>class Addition{public: T fun( T a, T b ) { retu转载 2012-09-20 11:16:41 · 338 阅读 · 0 评论 -
C/C++浮点数在内存中的存储方式
任何数据在内存中都是以二进制的形式存储的,例如一个short型数据1156,其二进制表示形式为00000100 10000100。则在Intel CPU架构的系统中,存放方式为 10000100(低地址单元) 00000100(高地址单元),因为Intel CPU的架构是小端模式。但是对于浮点数在内存是如何存储的?目前所有的C/C++编译器都是采用IEEE所制定的标准浮点格式,即二进制科学表示法转载 2012-09-20 16:17:30 · 601 阅读 · 0 评论 -
关于数组指针的一道面试题
http://www.cnblogs.com/dolphin0520/archive/2011/09/26/2191985.html看下面一道面试题:#include#includeint main(void) { int a[5]={1,2,3,4,5}; int *ptr=(int *)(&a+1); printf("%d,转载 2012-09-20 16:14:34 · 339 阅读 · 0 评论 -
类的成员变量偏移指针和成员函数指针 .
1、类的成员变量的偏移指针这是个特殊的指针[cpp] view plaincopyprint?class A { public: int x; int y; }; class A{public: int x; int y;};&A::x和&A::y就表示类A的数据成员偏移指针。 int _tma转载 2012-10-11 09:33:46 · 371 阅读 · 0 评论 -
仿函数与回调函数
在之前聊了小括号重载和回调函数,现在来聊聊仿函数,以及它和回调函数的关系。 仿函数是对象使用行为看上去像个函数。 函数的使用是这个样的 Function(param1,param2,...) 而对象的使用是这个样的 Object.memberfunction(param1,param2...) 而仿函数对象的使用是这个样的 Ob转载 2012-09-20 11:23:15 · 2681 阅读 · 0 评论 -
回调函数
#include using namespace std;typedef void (*CALLBACK)( int a, int b );class CBase{public: CBase();public: /* ** 注册回调函数 ** */ void RegisterCallback( CALLBACK f转载 2012-09-20 12:21:32 · 420 阅读 · 0 评论 -
C++类模板的三种特化
说起C++的模板及模板特化,相信很多人都很熟悉,但是说到模板特化的几种类型,相信了解的人就不是很多。我这里归纳了针对一个模板参数的类模板特化的几种类型,一是特化为绝对类型;二是特化为引用,指针类型;三是特化为另外一个类模板。这里用一个简单的例子来说明这三种情况:// general versiontemplateclass T>class Compare{public:转载 2012-08-17 22:20:14 · 327 阅读 · 0 评论 -
位模式转换-----C++实现浮点数存储格式输出
计算机内浮点型数据表示形式 设计c++程序,实现敲入浮点数后,显示计算机中实际存储的二进制信息。以下是一个很简单的实现代码,C/C++ code#includestdlib.h>#includeiostream>using namespace std;int main(){ int b[32]; long s;//占4个字节,用于实现 i转载 2012-10-11 10:27:23 · 804 阅读 · 0 评论 -
内存对齐全攻略—刀枪入库 功德圆满
全攻略有点大放厥词,哗众取宠了,其实是一些常见的问题罢了。但是自认为总结的还算全面一点吧,请大家多多赐教,我只是个初学者。接下来主要讨论四点:一、不涉及位域的内存对齐二、涉及位域的内存对齐三、成员变量含有结构体的内存对齐情况四、要求内存对齐的原因及优点--------------------------------------------------------------转载 2012-10-11 22:12:47 · 403 阅读 · 0 评论 -
内存对齐全攻略--涉及位域的内存对齐原则
http://www.cnblogs.com/shitouer/archive/2010/04/07/1706785.html全攻略有点大放厥词,哗众取宠了,其实是一些常见的问题罢了。但是自认为总结的还算全面一点吧,请大家多多赐教,我只是个初学者。接下来主要讨论四点:一、不涉及位域的内存对齐二、涉及位域的内存对齐三、成员变量含有结构体的内存对齐情况四、要求内存对齐的原因及优转载 2012-10-11 22:14:36 · 406 阅读 · 0 评论 -
内存对齐全攻略--不涉及位域的内存对齐原则
全攻略有点大放厥词,哗众取宠了,其实是一些常见的问题罢了。但是自认为总结的还算全面一点吧,请大家多多赐教,我只是个初学者。接下来主要讨论四点:一、不涉及位域的内存对齐原则二、涉及位域的内存对其原则三、成员变量含有结构体的内存对齐情况四、要求内存对齐的原因及优点引子: 1#include iostream> 2using namespace std; 3s转载 2012-10-11 22:15:07 · 315 阅读 · 0 评论